如何可靠地启动和停止长时间运行的进程(想想几天),这个进程比播放它的脚本更长?

时间:2015-01-24 10:44:32

标签: php

我有一个CLI php应用程序,其中包含启动后台进程的命令(Selenium服务器),然后退出:

  

php app.php服务器:启动#this应立即返回

应用程序还需要能够在以后的调用中停止后台进程:

  

php app.php服务器:停止

由于服务器进程比启动/停止脚本更长,因此无法通过保持文件描述符打开来管理它。

我可以在start期间将进程的PID存储在文件系统上,并在stop中终止该PID。但是如果stop命令在后台进程死了之后就运行了,那么我冒着一个我没有启动的进程的风险,因为操作系统可能会为其他进程重用PID。

现在我的方法是不仅存储后台进程的PID,还存储后台进程'使用的开始时间和命令。没关系,但很难让它在不同的平台上保持一致(我需要Linux,Mac和Windows)。

你能想出一种更好的方法来实现这种行为吗?

0 个答案:

没有答案