使用Monit监控自定义守护程序

6

我有一个用PHP编写的守护进程。我使用以下命令来调用守护进程:

php dojobs.php

当我调用该命令时,守护进程会无限运行,因为文件dojobs.php具有以下代码。
while(true)
{
   code here
}

我有以下问题:

  • 如何使用Monit(在CENTOS Linux 5.5上)服务器来监视此守护进程,并在其失败时重新启动它?
  • 我在守护进程中有以下代码:

    exec('nohup sendMail.php > /dev/null 2>&1 & echo $!';, $op);

(如何确保上面的nohup命令正常工作,并且sendMail.php文件实际执行其工作?sendMail.php不是一个守护进程。它发送电子邮件,然后退出。)

非常感谢。

1个回答

2

我不熟悉Monit,所以无法帮助您解决问题。但是,您可以使用进程控制(pcntl_*())扩展来分叉单独的进程,并等待它们向父进程返回状态码,以便父进程知道作业是否已成功完成,而不是调用 exec()


问题是我的守护进程正在做很多事情。因此,它不能等待进程。 - user816604
我不是指像阻塞进程一样等待 - 这是一个无限循环,因此您可以定期轮询返回状态。 - Narf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接