2014-12-19 114 views
0

我正在为CMS创建一个插件,并且需要在后台执行一个或多个preriod任务。由于它是开源CMS的插件,因此cron作业不是一个完美的解决方案,因为用户可能无法访问其服务器上的cron。PHP无限循环过程;这是好的解决方案吗?

我打算通过AJAX请求启动无限循环,然后中止XHR请求。所以HTTP连接将被关闭,但脚本继续运行。

这是一个很好的解决方案吗?那服务器资源呢?服务器(如Apache)中是否有关于长时间运行线程的关闭或限制策略?

+0

通常PHP有60秒的运行。因此,Cron Job更好,如果不可能的话,有在线服务,将在60秒的间隔内调用一个php页面,您可以使用它来做一个cron作业系统(示例) – 2014-12-19 10:30:34

+0

我不喜欢这个想法。 PHP有max_execution_time。可以通过运行时设置max_execution_time,但我真的不能建议使用它。接下来,您将对fastCGI和/或Apache有限制。至少他们会杀死你的PHP进程。同样的原因,以避免改变这种设置,就像你提到不使用cron。它确实取决于你的任务。也许最好是通过客户端请求(可能是第n个请求)启动你的进程或者通过cron定期启动脚本。 – LucasF 2014-12-19 10:30:53

回答

0

长时间运行的PHP脚本不是太好主意。如果您的脚本使用会话变量,则用户将无法加载任何页面,直到其他基于会话的脚本关闭。

如果您确实需要长时间运行的脚本,请确保它没有使用任何会话并将它们保持在最大执行时间之下。不要让它在没有你控制的情况下运行。它会导致各种问题。我记得当我做了这样的事情,我的服务器刚刚崩溃了好几次。

知道你想要做什么,并确保它在不同的服务器上进行了良好的测试。

还搜索类似的模块,并检查他们使用什么方法来解决这样的问题。向专业人士学习。 :)

+0

避免长时间运行脚本不是解决方案。想象一下,想要运行一个始终存在的守护进程。 – 2014-12-19 10:41:02

相关问题