如何检测会话何时即将结束。PHP

如何检测会话何时即将结束。PHP,php,session,web,Php,Session,Web,我不知道这是否可能。我要找的是启动结束会话的事件(如果有)。我想在会议结束之前,抓住这个机会,完成我自己的行动。原因是我需要一个会话变量集,一旦会话过期,我就会丢失它 我觉得如果可能的话,这可能是实现我目标的一种糟糕的方式。现在是星期五晚上7点,还在办公室。想象一下我试图找到解决办法的兴奋心情 谢谢各位。如果您有数据库访问权限,您可以将会话信息存储在会话表中,并从该特定用户注册的最后一个会话中检索该变量 据我所知,没有可靠的方法可以在会话终止之前触发一个保证有效的事件。重构数据的处理方式,而不是

我不知道这是否可能。我要找的是启动结束会话的事件(如果有)。我想在会议结束之前,抓住这个机会,完成我自己的行动。原因是我需要一个会话变量集,一旦会话过期,我就会丢失它

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


谢谢各位。

如果您有数据库访问权限,您可以将会话信息存储在会话表中,并从该特定用户注册的最后一个会话中检索该变量


据我所知,没有可靠的方法可以在会话终止之前触发一个保证有效的事件。重构数据的处理方式,而不是进行脆弱的破解,这对您最有利。

例如,如果您让自己的会话保存处理程序使用数据库,您可以使用垃圾回收回调,在删除数据之前可以使用该回调来获取适当的数据


请特别参阅
gc
回调。

您可以将数据保存在cookie中并控制过期日期:

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


这样,您就不需要更改常规会话功能,也不需要让它们正常过期。

您可以使用Javascript来完成这项工作。让服务器提供一个JS函数,该函数将一直休眠到会话即将到期

然而,这并不是万无一失的:当用户离开你的页面时,他们不再运行你的JS。当然,你也不能联系他们,告诉他们你会说什么,当会话到期


您还可以在真正删除数据之前让会话“过期”,并使用自定义处理程序提醒用户并给他们一个宽限期。销毁处理程序第二次触发时,实际上会删除数据。

从技术上讲,无法判断PHP存储的会话(服务器端cookie中的会话)何时将被终止。在PHP设置中,您可以说cookie必须存活多长时间,但它可以持续更长的时间


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

正如您自己所说,您觉得这是实现目标的一种糟糕的方式,您能详细介绍一下您的目标是什么吗?我认为这是我试图实现的最佳解决方案。谢谢