始终运行过程

时间:2011-08-13 10:44:37

标签: php linux bash

有什么方法可以确保某些流程始终在运行?

假设我需要这个运行:

php -f myscript.php -param1=value1

现在我这样做:

启动进程,然后将PID写入文件(myProcess.pid)。 然后我安排一个cronjob,它会定期尝试每5分钟一次又一次地启动该过程。

该过程实际上是一个 bash脚本文件,它首先检查myProcess.pid是否存在以及是否是,如果该文件中的PID真的在运行,如果不是,则启动它并且用新的PID重写“myProcess.pid”。

该解决方案存在一些问题:

  1. “cron check”之间的“停电”时间段怎么样?
  2. 这个时期怎么样?花费不必要的CPU时间不是5分钟吗?
  3. 如果文件myProcess.pid已被泄露,或者被某人/某物删除了怎么办?然后bash脚本再次启动它,即使它已经在运行。
  4. 如果过程死亡并且确切的PID需要另一个过程怎么办?
  5. 是否存在更好的方法?

1 个答案:

答案 0 :(得分:4)

您需要某种监控应用程序,例如

  

Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上监视和控制许多进程。

或者,您可以创建一些守护进程的PHP代码: