我查看了一些关于在php中检测浏览器退出的话题(这里和谷歌),但是我并没有明白如何实现。
我尝试使用PHP中的register_shutdown_function
,但是即使我刷新浏览器页面,它也会执行。
有人能帮忙吗?
谢谢!
PHP是一种服务器端语言。浏览器事件由DOM事件处理。在“onunload”或“onbeforeunload”事件中,发送一个AJAX调用到一个PHP文件。
而且在这个问题中有一个关于我所说的内容的解释。
不仅限于PHP。
PHP是运行在服务器端的,当用户关闭浏览器时,它已经完成了处理页面的任务。你可以通过特定的配置来检测PHP是否仍在处理页面并且用户关闭了它,但这并不理想。请参见connection_aborted()
。
你需要做的是使用JavaScript建立一个长轮询连接,并在服务器端进行监控。然后你就能知道窗口何时关闭。该连接可以连接到你的PHP脚本,让PHP检查connection_aborted()
。请注意,你需要设置ignore_user_abort()
才能使其工作,或者相应地配置PHP.ini。
至少具有防错功能的一种解决方案是使用Javascript和Ajax向服务器发送心跳信号,然后假设当信号停止脉动时浏览器窗口已关闭。
另一种方法是使用Web sockets来保持持续连接,直到浏览器窗口关闭。
无论哪种情况,都需要您投入相当多的工作来设置它。