php如何在会话超时时执行函数


php how to execute function on session timeout

我有包含用户登录用户名的$_SESSION变量,这些变量设置了默认会话寿命(我想是24分钟)。我想知道是否有一种方法可以在会话超时时执行函数。

我知道当用户重新加载页面并且会话变量已过期时,我可以告诉页面执行该函数,但我正在尝试为服务器自己找到一种方法。有这样的方法吗?

我的推理:当用户登录时,我会向我的数据库报告并更新"lastlogin"的用户记录。我想在用户单击登出或$_SESSION变量过期时更新"lastlogout"。

在关闭和gc(垃圾收集器)时尝试session_set_save_handler中的设置回调。

您可以通过以下方式使用javascript:

<?php
...
$currentTimeoutInMillis = ini_get(’session.gc_maxlifetime’) * 1000;
print "<script type='text/javascript'>'n";
print "<!--'n";
print "setTimeout('window.location.href='"timeout.php'"', $currentTimeoutInMillis);'n";
print "//-->'n";
...
?>

然后,当超时时间用完时,您的timeout.php将被自动调用。在这个脚本中,此时$_SESSION内容已经丢失(垃圾收集),您可以调用数据库来更新用户的记录。