我有一些php脚本updater.php
可以在1-2分钟内完成一些工作。完成脚本工作很重要。
我可以用cron运行它,但我有一些想法。
只有当用户获得主页时,脚本才会运行具体时间。在这种情况下,不必每次都执行脚本,只有在需要时才执行脚本。
因此,用户加载http://localhost/index.php
,js脚本发布小获取请求:
$.get('/json/updater.php', function(data){ return true; });
请求在1-2分钟内进行。
问题:如果用户关闭浏览器中的标签并因此中断$ .get请求,那么updater.php
的处理是否会停止?
答案 0 :(得分:4)
如果您关闭浏览器窗口,请求不会被取消,因此PHP只能完成脚本(假设执行时间不超过最大配置时间请参阅:{{ 3}})。当然,一旦关闭窗口,您在JavaScript中执行的任何操作都将停止。
答案 1 :(得分:2)
请记住,您可以直接从命令行或使用cron执行PHP脚本,只需使用PHP解释器的路径即可。对于预定作业,我建议不要有任何前端要求(JavaScript /浏览器),因为这可能会导致一致性问题,您希望您的作业每2分钟运行一次并且添加另一个步骤(AJAX或浏览器)引入该频率的可能性变得不一致。
答案 2 :(得分:1)
如果用户关闭浏览器中的选项卡并因此中断$ .get请求,updater.php的处理是否会停止?
只有在实际发送请求之前关闭选项卡时才会相当快,在这种情况下它不会“停止”,而是“永远不会启动”。
一旦收到客户端的GET请求,请求本身就完成了。您可以在服务器上生成进程,浏览器无法控制该进程。浏览器只能阻止客户端代码运行。
相反,为什么要单独提出要求呢?如果您希望在加载页面时生成该过程,为什么不在 index.php
内从生成它?好处包括: