Php 如何确保在zend中关闭浏览器时销毁会话

Php 如何确保在zend中关闭浏览器时销毁会话,php,linux,zend-framework,Php,Linux,Zend Framework,我有一个在zend框架中开发的应用程序。问题在于,当浏览器窗口关闭时,会话不会被破坏。有什么想法吗?使用onunload事件向服务器发送ajax请求,该请求将破坏会话 请参阅:通常,会话在用户代理终止时结束,例如当最终用户退出web浏览器程序时。但是,您的应用程序可以通过使用持久cookie将用户会话扩展到客户端程序的生命周期之外 如果不使用Zend_Session::rememberMe(),则应在关闭浏览器的所有窗口后将其销毁。会话变量在过期或清除浏览器cookie之前不会被销毁。 当我们在

我有一个在zend框架中开发的应用程序。问题在于,当浏览器窗口关闭时,会话不会被破坏。有什么想法吗?

使用onunload事件向服务器发送ajax请求,该请求将破坏会话


请参阅:

通常,会话在用户代理终止时结束,例如当最终用户退出web浏览器程序时。但是,您的应用程序可以通过使用持久cookie将用户会话扩展到客户端程序的生命周期之外


如果不使用Zend_Session::rememberMe(),则应在关闭浏览器的所有窗口后将其销毁。

会话变量在过期或清除浏览器cookie之前不会被销毁。
当我们在注销之前关闭浏览器时,您会看到同样的问题。

您应该在php.ini或代码中将session.cookie\u life设置为0

The value 0 means "until the browser is closed."

代码:


当我使用Zend Memory me选项时,我遇到了同样的问题,我没有找到解决方案,但有一个好主意,使用Zend db handler存储会话,并通过编写简单的查询来删除过期的会话来删除旧cookie(如果是cron任务,这是一个好的解决方案)

有关zend会话db处理程序的更多信息,请参见:


您是否关闭了浏览器,不仅仅是带有页面的窗口?我完全关闭了浏览器,但当我重新加载页面时,页面会话仍然存在,这是我不想要的。您还可以在application.ini中检查memory_me_seconds。还可以查看Zend_Session::forgetMe();在chrome中,会话似乎被破坏了,但在Firefox中却没有。您知道Zend Framework中是否有API使您能够触发该设置?/>Zend_seision::forgetMe()
session_set_cookie_params (0);