php cron replacement

php cron replacement

本文关键字:replacement cron php      更新时间:2023-09-26

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

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

脚本将运行具体的时间只有当用户得到例如主页。在这种情况下,没有必要每次都执行脚本,只有在需要时才执行。

所以,用户加载http://localhost/index.php, js脚本发布小get请求:

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

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

问题:如果用户在浏览器中关闭选项卡并因此打破$,updater.php工作的处理将停止吗?get请求吗?

如果关闭浏览器窗口,请求不会被取消,因此PHP将能够简单地完成脚本(假设执行时间不超过最大配置时间参见:http://php.net/manual/en/function.set-time-limit.php)。当然,你在JavaScript中做的任何事情都会在你关闭窗口后停止。

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

如果用户在浏览器中关闭选项卡并因此打破$,那么update .php的处理将停止。get请求吗?

只有当他们在实际发送请求之前关闭选项卡时,这将相当快,在这种情况下,它不会"停止",而是宁愿"从未开始"。

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

相反,为什么在单独的请求上这样做?如果您希望在加载页面时生成进程,为什么不在 index.php中从生成它呢?好处包括:

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