我不知道这是否可行。我正在寻找的是事件(如果有的话)启动以结束会话。在会议结束之前,我想以某种方式抓住它并执行我自己的行动。原因是我需要一个会话变量集,一旦会话到期我就会丢失。
我觉得如果可能的话,这可能是实现目标的一种糟糕方式。现在是星期五晚上7点,仍然在办公室。想象一下我试图寻找解决方案的兴奋。
谢谢大家。
答案 0 :(得分:2)
例如,如果您创建自己的会话保存处理程序以使用数据库,则可以使用回收来进行垃圾回收,以便在删除数据之前获取相应的数据。
请参阅session_set_save_handler,尤其是gc
回调。
答案 1 :(得分:1)
如果您具有数据库访问权限,则可以将会话信息存储在会话表中,并从该特定用户注册的上一个会话中检索该变量。
我知道,没有可靠的方法在会话终止之前触发事件,保证可以正常工作。重新构建数据的处理方式符合您的最佳利益,而不是提出一个脆弱的黑客攻击。
答案 2 :(得分:0)
您可以将数据保存在Cookie中并控制到期日期:
setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */
http://php.net/manual/en/function.setcookie.php
这样您就不需要更改常规会话功能并允许它们正常到期。
答案 3 :(得分:0)
您可以使用Javascript进行排序。让服务器提供一个JS函数,该函数将在会话即将到期之前休眠。
然而,这并非万无一失:当用户离开您的页面时,坚固的cookie,他们不再运行您的JS了。当然,你也无法联系到告诉他们会议到期时你说的话......
在真正删除数据之前,您还可以让会话“过期”,并拥有一个自定义处理程序来警告用户并为他们提供宽限期。第二次销毁处理程序触发时,实际上删除了数据。
答案 4 :(得分:0)
从技术上讲,不可能判断PHP存储的会话(服务器端cookie中的会话)何时被终止。在PHP设置中,您可以说cookie必须存活多久,但它可以持续超过设定的时间。
如果您需要跟踪它的持续时间,您应该手动构建会话管理系统而不是使用PHP。