我写了一个没有时间限制的脚本,max_execution_time 为 0
我应该工作到工作结束或用户中止(从浏览器取消)。
我如何确定当用户从浏览器中止页面加载时脚本被服务器杀死?这会立即杀死脚本还是之前调用类的 __destructor?
假设这是由 ajax 调用的,您可以添加一个事件处理程序,用于当用户离开发送 ajax 请求的网页时,该请求由杀死另一个脚本的脚本处理。
这可以通过让脚本在启动时创建一个文件来实现。然后,它每隔一段时间就会检查该文件是否仍然存在。如果是,则继续,如果不是,则退出。
诀窍是找到文件名。我这样做的方法是给每个页面请求一个唯一的用户 ID。'worker' 脚本和 'kill' 脚本在 url (GET) 中使用相同的用户 ID 调用。
据我了解,当用户终止页面加载时,php 无法停止脚本执行。我假设“中止”是指在页面仍在加载时单击停止或关闭浏览器。