很多长期运行的cron工作

时间:2015-03-13 18:24:05

标签: php cron

我现在有大约35个cron工作。其中大多数都是PHP脚本,可以刮掉或进行一些计算。脚本还循环遍历10-20个不同的服务器来进行这些擦除。 (他们是不同的国家,所以他们必须是单独的电话)。

因此我们有30个脚本,每个脚本有一个超过20个服务器的循环,因此每个脚本运行大约需要5-15分钟。我现在每个脚本都有间隔。

但最好是运行80个单独的脚本而不是35个循环并需要一段时间的脚本吗?每个脚本可能需要1-2分钟而不是10-15分钟。

这当然会产生更多的PHP进程。一次运行10-15个或更多PHP进程是否有任何问题或限制?

我在Rackspace上运行云服务器性能。

3 个答案:

答案 0 :(得分:0)

就个人而言,如果工作需要以某种顺序完成,我会尽可能地使其成为线性.....可能需要更长时间,但我总是犯错。数据准确性方面。

答案 1 :(得分:0)

取决于。

如果要创建更多将同时运行的进程,则会增加总体内存占用量。每个进程都会携带自己的内存开销,以便运行进程,并加载其进程所需的任何库。 (除了它需要做的任何事情)。您还将拥有两倍多的脚本来监控它们是否一直成功运行。

然而,在创建更多进程时,您将能够加速我们的速度,因为您实际上是在创建一个多线程。允许一个进程继续,而另一个进程阻止等待i / o。

如果每个脚本都没有依赖另一个脚本,那么将它们分成更小的脚本应该没问题。如果您可以处理监视更多脚本,并且服务器可以处理它,那么我会这样做。

如果脚本确实存在依赖关系,或者如果您必须在服务器使用率最大化的同时运行这么多,请将它们保持在一起。

话虽这么说,我也会尝试优化脚本,确保你没有办法让它们更快,而不需要创造更多的流程。

答案 2 :(得分:0)

根据您设置服务器的方式,我会立即运行它们。此外,我还会在晚上运行它们,在不使用Web服务器的情况下运行它们,而不是在业务运营期间运行它们,除非您的Web应用程序依赖它。如果你在Rackspace上的云服务器上,我不会担心带宽,虽然增加你的内存可能是一个问题。

如果你有足够数量的ram,那么产生更多的PHP过程应该不用担心; linux方面没有限制。

a) Figure out which cron needs to run in which order
b) Order the cron to be run at night, around mid-night
c) Run and fireoff the 80 scripts at once 

向您发送包含cron结果的电子邮件或根据批次而非个人cron成功完成报告也是一个好主意。