2012-02-10 80 views
2

我不知道这是否可能。我正在寻找的是事件(如果有的话)发起会议结束。我想以某种方式抓住并在会话结束之前执行我自己的操作。原因是我需要设置一个会话变量,一旦会话过期,我就会失去它。如何检测会话何时结束。 PHP

我觉得这可能是实现我的目标的一种可能的方式,如果可能的话。这是星期五晚上7点,仍然在办公室。想象我的兴奋试图找到解决方案。

谢谢你们。

+1

当你陈述你自己时,你觉得它是实现你目标的一个可怜的方法,你能扩展一下你实际的目标吗? – Leigh 2012-02-11 00:40:25

回答

0

您可以将数据保存在cookie和控制的失效日期:

setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 

http://php.net/manual/en/function.setcookie.php

这样,你不需要改变常规会话功能,并让他们正确到期。

+0

我认为我想达到的目标是最好的解决方案。谢谢。 – 2012-02-13 19:30:08

1

如果您有数据库访问,你可以存储在一个会话表中的会话信息和检索由特定用户注册的最后一个会话变量。

我知道,在保证工作的会话终止之前触发一个事件没有可靠的方法。重构数据的处理方式,而不是提供一个简单的黑客攻击,这对你来说是最有利的。

2

如果你把你自己的会话保存处理程序来使用,例如数据库,你可以有垃圾收集,你可以用它来抓取之前删除数据的相应数据的回调。

session_set_save_handler,特别是gc回调。

0

您可以使用Javascript进行排序。让服务器提供一个JS函数,该函数将休眠直到会话即将过期。

然而,这并非万无一失:用户离开你的页面,坚韧饼干的时候,他们没有遇到你的JS了。当然,你也可以不联系,告诉他们当会话过期不管你会说拿到...

你也可以有你的会话“过期”你真的删除数据面前,有一个自定义处理程序提醒用户并给他们一个宽限期。第二次销毁处理程序触发,实际上删除数据。

0

从技术上讲这是不可能告诉时是由PHP(会话服务器端的cookie)存储的通话将被杀死。在PHP设置中,可以说cookie必须存活多久,但它可以持续更长的时间。

如果您需要跟踪它持续多长时间,您应该手动构建会话管理系统而不使用PHP。