可以优化Php脚本来限制对服务器内存和CPU的影响吗?

时间:2011-08-30 15:02:33

标签: php memory cron cpu

我有一个通过cronjob在我的服务器上运行的PHP脚本。这项工作每分钟都在运行。在PHP脚本中,我有一个循环执行,然后等待一个sevond并再次循环。基本上创建一个每秒运行一次的脚本。

现在我想知道,如果我让cronjob每小时运行一次并让脚本仍然循环整整一个小时或可能整整一天..这会对服务器cpu和/或内存有任何影响吗?那么,它会是积极的还是消极的?

3 个答案:

答案 0 :(得分:1)

我发现了设计缺陷。

您始终可以在循环中永久运行PHP脚本,执行您需要的任何功能,而不依赖于Web服务器或客户端。

你显然正在用这个脚本检查一下,任何煽动什么?可能有更好的解决方案。例如,如果它是数据库,则考虑SQL触发器。

答案 1 :(得分:0)

在我看来,这会产生负面影响。因为脚本不断使用资源。 cron在已经在服务器上运行的基于时间的比例上调用。 但是cronjob最多只能每分钟运行一次。

另一件事是,如果脚本超时,失败,崩溃因为任何原因你最终没有运行脚本最多一个小时。会对服务器负载产生积极影响但不是我想要的东西吗? :)

可能每2或甚至5分钟运行一次以节省服务器负载?

或者可能更改脚本,因此它不会等待,只需执行一次并从cron作业调用它。应该对服务器负载产生积极影响。

答案 2 :(得分:0)

我认为如果可能的话,你应该更改脚本逻辑。

如果脚本执行的任务不是定期的,而是由某些事件触发的,那么您可以使用一些消息队列(如Gearman)。

否则您的解决方案就可以了。内存泄漏可能会发生,但在新的PHP版本(5.3.x)中,垃圾收集器非常好。某些扩展可能导致内存泄漏。或者您的应用程序设计可能导致内存使用量过大(如Doctrine ORM加载的对象缓存)。 但您可以通过monit等工具控制脚本内存使用情况,并在mempry limit达到某个点时重新启动脚本,或者在脚本意外关闭时再次启动脚本。