不使用pcntl_fork的PHP简单守护程序
我的web应用程序的一部分是从beanstalkd服务器轮询并处理数据的后台脚本 此脚本需要像守护进程一样连续运行。如果它崩溃,需要重新启动。它也不能启动两次更精确地运行两次 由于我希望简化部署和开发过程,因此我希望避免使用pcntl_fork。它在Windows上不可用,需要在Mac上重新编译PHP,有时也在Linux上 我可以简单地使用bash脚本在后台启动PHP脚本吗不使用pcntl_fork的PHP简单守护程序,php,bash,cron,daemon,background-process,Php,Bash,Cron,Daemon,Background Process,我的web应用程序的一部分是从beanstalkd服务器轮询并处理数据的后台脚本 此脚本需要像守护进程一样连续运行。如果它崩溃,需要重新启动。它也不能启动两次更精确地运行两次 由于我希望简化部署和开发过程,因此我希望避免使用pcntl_fork。它在Windows上不可用,需要在Mac上重新编译PHP,有时也在Linux上 我可以简单地使用bash脚本在后台启动PHP脚本吗 # verify that the script is not already running ... /usr/bin
# verify that the script is not already running
...
/usr/bin/php myScript.php &
如果我每隔一个小时左右使用crontab执行此批处理,我的进程应该连续运行,如果崩溃,最长应在一小时内重新启动?假设您盲目地控制脚本运行的服务器,这可能是一个很好的解决方案 它是一个进程控制守护进程,用Python编写。您可以将其配置为启动PHP脚本并保持其运行。PHP脚本本身不需要做任何特殊的事情。没有分叉,没有手动过程控制,什么都没有
另一方面,您也表达了对Windows上无法使用pcntl_fork的担忧。若你们真的在Windows上运行这个东西,那个么Supervisor就不适合你们,因为它对Windows不友好。请记住,Windows对Unix风格的守护程序也不是很友好,因为它希望将守护程序作为服务进行控制。然而,这并不是一个简单或优雅的解决方案。很好的解决方案。对于Windows或任何开发环境,最重要的是能够运行脚本。如果它不以执事的身份运行,这不是一个大问题。pcntl_fork甚至会阻止脚本启动,所以这是主要问题。在这种情况下,因为脚本只需要完全不经修改地运行,所以Supervisor会工作得很好。