Php 如何检测会话何时结束

Php 如何检测会话何时结束,php,javascript,Php,Javascript,有没有办法检测到有人离开你的网站?到目前为止,我知道如何使用ignore\u user\u abort() 我之所以需要知道这一点,是因为我需要一个脚本在有人离开网站时执行。在数据库中为每个用户记录一个时间戳,并在每次页面加载时(或通过AJAX)更新它 当上次更新的时间戳比CETAN的时间(30分钟?)要长的时候,你可以考虑他们已经离开了站点并执行你的代码,然后删除条目。 想法:“用户”可以是由其IP和用户代理组成的主键,例如MD5哈希 我找到了那篇文章 2) 线 3) 另外由于http的无状

有没有办法检测到有人离开你的网站?到目前为止,我知道如何使用
ignore\u user\u abort()


我之所以需要知道这一点,是因为我需要一个脚本在有人离开网站时执行。

在数据库中为每个用户记录一个时间戳,并在每次页面加载时(或通过AJAX)更新它

当上次更新的时间戳比CETAN的时间(30分钟?)要长的时候,你可以考虑他们已经离开了站点并执行你的代码,然后删除条目。

  • 想法:“用户”可以是由其IP和用户代理组成的主键,例如MD5哈希
  • 我找到了那篇文章

    2) 线


    3) 另外

    由于http的无状态性质,没有一种简单的方法来判断某人何时离开站点。当他们离开页面时,可以触发onUnload,但当他们在站点上从一个页面导航到另一个页面时,也会触发onUnload

    • Mozilla的参考:
    • 女士参考:

    通常情况下,会话设置为在X分钟内没有看到用户时刚好过期。

    我可以使用javascript轻松完成,请检查此解决方案

      <body onbeforeunload="winCloseFunc();"> =) 
    
    =)
    
    您可以跟踪上次使用他们的会话id的时间。然后,当它超过某个阈值时,运行脚本。或者,当他们试图离开您的站点时,您可以使用javascript进行检测。我敢肯定你已经看到了那些烦人的弹出窗口,它们试图让你停留在网页上。我不需要Cron来做这样的事情吗?是的,你可能需要运行旧条目。你不能指望通过javascript抓到离开的人。不过,我有点回到了我最初的问题。我不想让cron在站点上运行2分钟,如果这有意义的话,它几乎需要是单独的。php有一个会话gc函数,可以随时调用,用于清除旧会话。某些会话后端将忽略加载时过期的会话。不需要cron。cron在设定的时间运行,比如说每15分钟一次。它所做的只是查找旧条目,例如从用户浏览中选择*,其中浏览日期>=NOW()-间隔30分钟,然后对每个结果执行代码。