如何创建一个合适的PHP后台进程?

时间:2016-05-16 10:21:40

标签: php message-queue zeromq background-process nohup

我正在使用linux命令nohup php filename.php &来创建后台php进程。这里的问题是,如果filename.php中包含的文件或甚至文件本身都有任何更改,我必须终止当前进程并再次启动它。有没有办法防止这种情况,因此代码更新不需要重新启动,因为我不希望在我的应用程序中出现任何停机时间(因为杀死并重新启动进程)。如果没有别的办法,那么有人会提出另一种方法吗?

编辑1

我正在使用ZeroMQ进行主进程和后台进程之间的通信。后台进程绑定到特定的TCP端口,比如555.现在,如果我尝试启动一个新进程,并尝试将其绑定到同一个端口,则会出现错误,因为该端口已在使用中。因此,我需要在开始新流程之前终止流程。

编辑2

请查看我的其他question,了解有关示例代码的完整问题的详细解释。

1 个答案:

答案 0 :(得分:1)

脚本运行时无法更新代码。当它与apache一起运行时,PHP甚至不会这样做。但是PHP会在新请求启动之前检查它是否应该重新加载代码。

如果表现不是一个大问题。你可以自己做类似的事情。有一个主脚本(不需要更改太多)监听队列。然后使用proc_open启动第二个脚本来运行第二个脚本并通过管道序列化数据。现在,当使用第二个脚本时,它将为每个请求重新加载。