php cron替换

时间:2011-12-29 19:37:23

标签: php javascript ajax cron

我有一些php脚本updater.php可以在1-2分钟内完成一些工作。完成脚本工作很重要。

我可以用cron运行它,但我有一些想法。

只有当用户获得主页时,脚本才会运行具体时间。在这种情况下,不必每次都执行脚本,只有在需要时才执行脚本。

因此,用户加载http://localhost/index.php,js脚本发布小获取请求:

$.get('/json/updater.php', function(data){ return true; });

请求在1-2分钟内进行。

问题:如果用户关闭浏览器中的标签并因此中断$ .get请求,那么updater.php的处理是否会停止?

3 个答案:

答案 0 :(得分:4)

如果您关闭浏览器窗口,请求不会被取消,因此PHP只能完成脚本(假设执行时间不超过最大配置时间请参阅:{{ 3}})。当然,一旦关闭窗口,您在JavaScript中执行的任何操作都将停止。

答案 1 :(得分:2)

请记住,您可以直接从命令行或使用cron执行PHP脚本,只需使用PHP解释器的路径即可。对于预定作业,我建议不要有任何前端要求(JavaScript /浏览器),因为这可能会导致一致性问题,您希望您的作业每2分钟运行一次并且添加另一个步骤(AJAX或浏览器)引入该频率的可能性变得不一致。

答案 2 :(得分:1)

  

如果用户关闭浏览器中的选项卡并因此中断$ .get请求,updater.php的处理是否会停止?

只有在实际发送请求之前关闭选项卡时才会相当快,在这种情况下它不会“停止”,而是“永远不会启动”。

一旦收到客户端的GET请求,请求本身就完成了。您可以在服务器上生成进程,浏览器无法控制该进程。浏览器只能阻止客户端代码运行。

相反,为什么要单独提出要求呢?如果您希望在加载页面时生成该过程,为什么不在 index.php内从生成它?好处包括:

  • 即使用户禁用了JavaScript,该过程仍会运行。
  • 即使用户在浏览器中加载/运行JavaScript代码之前取消导航,该过程仍会运行。
  • 网络开销略微减少,因为服务器只有一个请求。