1

我的 Web 应用程序的一部分是一个后台脚本,它从 beanstalkd 服务器轮询并处理数据。

该脚本需要连续运行(如守护程序)。如果它崩溃,它需要重新启动。它也不能启动两次(更准确地说是运行两次)。

由于我想简化部署和开发过程,我想避免使用pcntl_fork. 它在 Windows 上不可用,它需要在 Mac 上重新编译 PHP,有时也在 Linux 上......

我可以简单地使用 bash 脚本在后台启动 PHP 脚本吗?

# verify that the script is not already running
...

/usr/bin/php myScript.php &

如果我每隔一小时左右使用 crontab 执行这个批处理,我的进程应该连续运行,如果它崩溃,它应该在最多一小时内重新启动?

4

1 回答 1

0

假设您盲目地控制运行脚本的服务器,Supervisor对您来说可能是一个很好的解决方案。

它是一个进程控制守护进程,用 Python 编写。您可以将其配置为启动您的 PHP 脚本并使其保持运行。PHP 脚本本身不需要做任何特别的事情。没有分叉,没有手动过程控制,什么都没有。

另一方面,您还表达了对pcntl_fork在 Windows 上不可用的担忧。如果你真的在 Windows 上运行这个东西,Supervisor 不会为你工作,因为它不是 Windows 友好的。请记住,Windows 对 Unix 风格的守护进程也不是很友好,因为它希望将守护进程作为服务来控制。虽然这是可能的,但这并不是一个简单或优雅的解决方案。

于 2012-06-29T22:36:49.330 回答