Php 只要浏览器处于打开状态,就保持会话

Php 只要浏览器处于打开状态,就保持会话,php,session,Php,Session,我有一个PHP应用程序,它可以跟踪会话。我希望应用程序在用户关闭浏览器之前保持用户会话。在浏览器关闭之前,会话不应过期。我是一名java开发人员,也是PHP的新手 在关闭浏览器之前,会话不应超时。无论如何,一旦浏览器关闭,会话将在某个时间后超时 可以使用Javascript检测页面或浏览器窗口何时关闭。但是,不应依赖于此,因为有很多方法可以让用户在不发出通知的情况下停止浏览网站(浏览器崩溃、网络或断电等) 标准答案是不必为这类事情操心——PHP会话无论如何都有一个超时机制。如果用户在给定的时间段

我有一个PHP应用程序,它可以跟踪会话。我希望应用程序在用户关闭浏览器之前保持用户会话。在浏览器关闭之前,会话不应过期。我是一名java开发人员,也是PHP的新手


在关闭浏览器之前,会话不应超时。无论如何,一旦浏览器关闭,会话将在某个时间后超时

可以使用Javascript检测页面或浏览器窗口何时关闭。但是,不应依赖于此,因为有很多方法可以让用户在不发出通知的情况下停止浏览网站(浏览器崩溃、网络或断电等)

标准答案是不必为这类事情操心——PHP会话无论如何都有一个超时机制。如果用户在给定的时间段内没有加载任何页面,则会删除会话。这是标准的,你不必担心。您可能要做的唯一一件事是根据您期望用户使用站点的方式调整超时持续时间

如果您真的想密切关注用户,确保他们仍然活跃在站点上,并在他们停止后立即终止会话,我想您可以做一些事情,比如编写一个简单的Ajax ping,以便页面每隔几分钟(或您想要的任何间隔)向服务器发送一个请求

这将使会话保持活动状态,即使会话超时很短,直到浏览器停止发送ping(这可能是因为浏览器窗口已关闭,但也可能是因为浏览器崩溃、网络连接中断或用户拔下电源插头等)


不利的一面是,它会给您的服务器带来相当多的额外流量(以及相当多的额外工作),而仅仅让会话自己超时并没有任何实际好处。

我知道这个问题有点老了,但由于它仍然相关,我是这样做的:

函数keepMeAlive(){
var img=新图像();
img.src=YOUR_URL+'images/empty.gif?'+new Date().getTime();
}
设置间隔(keepMeAlive,600000);

现在创建一个1x1像素的gif图像并上传到指定的URL。上述代码将每10分钟加载一次,从而使您的会话保持活动状态。

您无法可靠地检测浏览器何时关闭。您所能做的就是确保会话cookie确实是“会话”cookie(例如,当浏览器退出时自动删除),这将使服务器端会话数据成为孤立/放弃。我的意思是,会话在浏览器关闭之前不应超时?您无法检测到浏览器何时关闭。您所能做的就是将php设置为有足够长的超时时间,以便大多数人不会被它击中。e、 g.如果您将“过时”会话文件设置为24小时生存期,您将得到一个让浏览器闲置24.1小时的用户。这确实很有用,但我只希望会话启动,并且在页面打开之前不会超时。SDC已经解释了为什么AJAX ping是好的,在有人关闭浏览器之前,您不能保持会话启动,会话超时或按需删除,您无法跟踪/确定用户是否以绝对/微秒精度关闭选项卡或浏览器