我有一个CLI php应用程序,其中包含启动后台进程的命令(Selenium服务器),然后退出:
php app.php服务器:启动#this应立即返回
应用程序还需要能够在以后的调用中停止后台进程:
php app.php服务器:停止
由于服务器进程比启动/停止脚本更长,因此无法通过保持文件描述符打开来管理它。
我可以在start
期间将进程的PID存储在文件系统上,并在stop
中终止该PID。但是如果stop
命令在后台进程死了之后就运行了,那么我冒着一个我没有启动的进程的风险,因为操作系统可能会为其他进程重用PID。
现在我的方法是不仅存储后台进程的PID,还存储后台进程'使用的开始时间和命令。没关系,但很难让它在不同的平台上保持一致(我需要Linux,Mac和Windows)。
你能想出一种更好的方法来实现这种行为吗?