PHP会话超时callback?

我正在运行PHP + APACHE + CENTOS Linux组合。

我已经在网站上实现了login和注销。

我的问题是,我怎样才能知道什么时候的PHP会话超时(用户已closures他的浏览器没有注销)?

原因是,当用户完成以下任何一项时,我想执行一些清理和/或数据库更新(调用另一个PHP):(1)LOGGED-OUT或(2)TIMED-OUT

我的猜测是,我将不得不使用Apache / Linux,对吧?

Solutions Collecting From Web of "PHP会话超时callback?"

而不是检测什么时候php会话超时,你可以创建一个脚本,以一个半定期的间隔运行(每5分钟说一次,最有可能使用crontab作业),这个脚本将会注销/执行清理任务,在最后一小时(或任何您的超时值)自动激活。 只需在你的用户表中添加一个“lastseen”。

跟踪数据库中的会话

如果您将会话的详细信息保存在数据库表中并记录任何活动,则可以轻松检查哪些会话在特定时间段内处于非活动状态。

进程队列

将清理功能添加到用户操作将会不必要地减慢您的网站。 在从服务器获得响应之前,用户不必等待这样的动作发生。

科雷

相反,您可以将要执行的操作添加到队列表中,然后使用CRON作业定期检查队列表以查看需要执行的操作。 CRON语法在此处列出。

您可以将会话ID存储在具有时间戳的数据库中,并且每次用户请求网页时更新时间戳。

然后设置一个cron,查看每个“活动”会话,计算不活动时间并将会话更新为“死”(可以使用定期运行的单个SQL语句来完成)。

此外,修改您的注销更新会话表,并设置会话“死”。

无论如何,我不认为有其他的方式来做到这一点(与“标准的”PHP函数),但让我们看看别人说什么。

我有同样的问题,但Lighty + PHP + Ubuntu。 我认为问题是,PHP只响应页面请求,所以没有机会让PHP在超时时提出事件。

你可以在PHP中覆盖会话存储功能 ,但这也不会帮助你。

您可以将最后一个事件的时间存储在会话中,并且每个会话都开始清理已超时的旧会话。 不是一个很干净的方式,但我发现的唯一工作方式。