[英]PHP session timeout callback?
我正在运行PHP + APACHE + CENTOS Linux组合。
我已经在网站上实现了登录和注销。
我的问题是,我怎么知道php会话何时超时(用户关闭了他的浏览器而没有注销)?
原因是,当用户执行以下任何操作时,我想执行一些清理和/或数据库更新(调用另一个PHP):(1)LOGGED-OUT或(2)TIMED-OUT
我的猜测是我必须使用Apache / Linux,对吧?
不是检测php会话何时超时,你可以创建一个脚本,该脚本将以某个半定期间隔运行(每5分钟就会说,最有可能使用crontab作业),这将记录/执行清理任何人在最后一小时(或任何超时值)自动激活。 只需在用户表中添加“lastseen”即可。
您可以将会话ID存储在带有时间戳的数据库中,并在每次用户请求网页时更新时间戳。
然后设置一个查看每个“活动”会话的cron,计算不活动时间并将会话更新为“死”(可以使用定期运行的单个SQL语句完成)。
此外,修改您的注销以更新会话表并将会话设置为“死”。
无论如何,我认为没有其他方法可以做到这一点(使用“标准”PHP函数),但让我们看看其他人说的话。
我有同样的问题,但使用Lighty + PHP + Ubuntu。 我认为问题是,php只对页面请求作出反应,因此没有机会让PHP在超时时引发事件。
您可以在PHP中覆盖会话存储功能 ,但这对您也没有帮助。
您可以将最后一个事件的时间存储在会话中,并且在每个会话开始时清理已经遇到超时的旧会话。 不是一个非常干净的方式,但我找到的唯一工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.