在服务器上运行常量的php脚本

时间:2012-05-14 16:57:09

标签: php shell cron monitoring lamp

我在AWS灯服务器上并行运行php脚本。现在我设置了一个cron作业,以10分钟的间隔运行每个脚本,然后脚本设置为在运行20分钟后退出。我限制每个脚本运行的时间,以防止服务器上的内存不足。我试图尽可能地插入内存孔,但是当我处理这个时,超时脚本是一个很好的临时解决方案。

问题是我在同一时间运行了太多脚本。因此,不是使用cron以设定的时间间隔运行脚本,而是如何编写服务器脚本

A)监控特定php脚本在任何特定时刻运行的实例数

B)如果该数字低于n(比如4个实例),服务器会启动另一个php脚本实例吗?

感谢您帮助我学习linux的方法!

1 个答案:

答案 0 :(得分:3)

最好的方法可能是编写自己的守护程序,它运行,分叉子进程,监视它们,并根据需要重新启动它们。

查看http://php.net/manual/en/book.pcntl.php

但是,在你的情况下,可能会有一个更简单的答案......放置一分钟的crontab来调用你的加载器脚本,如下所示:

* * * * *  /usr/bin/php /path/to/loader.php

加载器脚本可以是一个简单的shell脚本(或php脚本)。在shell中运行此命令。它将返回您正在运行的脚本的实例数。

ps aux | grep "/usr/bin/php /path/to/thing/you/run.php" | grep -v grep | wc -l

如果#instances> 3,然后不要启动一个。否则,启动一个。如果在PHP中,您只需包含所需的文件即可。如果在bash中,只需写/usr/bin/php /path/to/thing/you/run.php

希望它有所帮助!

相关问题