【发布时间】:2014-12-19 10:19:09
【问题描述】:
我正在为 CMS 创建一个插件,并且需要在后台执行一项或多项优先任务。由于它是开源 CMS 的插件,因此 cron 作业并不是一个完美的解决方案,因为用户可能无法访问其服务器上的 cron。
我将通过 AJAX 请求启动无限循环,然后中止 XHR 请求。所以 HTTP 连接将被关闭,但脚本会继续运行。
一般来说这是一个好的解决方案吗?服务器资源呢?对于长时间运行的线程,服务器(如 Apache)中是否有任何关闭或限制策略?
【问题讨论】:
-
通常 php 有 60 秒的运行时间。所以 Cron Job 更好,如果不可能有在线服务会以 60 秒的间隔调用一个 php 页面,你可以用它来做一个 cron 作业系统(示例)
-
我不喜欢这个主意。 PHP 有 max_execution_time。可以通过运行时设置 max_execution_time,但我真的不建议使用它。接下来,您将对 fastCGI 和/或 Apache 有所限制。至少他们会杀死你的 PHP 进程。避免更改此设置的相同原因,就像您提到的不使用 cron 一样。这真的取决于你想在你的任务中做什么。也许通过客户端请求(可能是第 n 个请求)启动您的进程或通过 cron 期刊启动脚本是个好主意。
标签: php infinite-loop background-process