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

如何创建一个合适的PHP后台进程?,php,message-queue,zeromq,background-process,nohup,Php,Message Queue,Zeromq,Background Process,Nohup,我正在使用linux命令nohup php filename.php&创建一个后台php进程。这里的问题是,如果filename.php中包含的文件甚至文件本身有任何更改,我必须终止当前进程并重新启动它。是否有任何方法可以防止这种情况发生,这样在代码更新时就不需要重新启动,因为我不希望在我的应用程序中出现任何停机(因为终止并重新启动进程)。如果没有其他方法可以解决这个问题,那么有人会建议另一种方法吗 编辑1 我使用ZeroMQ在主进程和这个后台进程之间进行通信。后台进程绑定到一个特定的TCP端口

我正在使用linux命令
nohup php filename.php&
创建一个后台php进程。这里的问题是,如果
filename.php
中包含的文件甚至文件本身有任何更改,我必须终止当前进程并重新启动它。是否有任何方法可以防止这种情况发生,这样在代码更新时就不需要重新启动,因为我不希望在我的应用程序中出现任何停机(因为终止并重新启动进程)。如果没有其他方法可以解决这个问题,那么有人会建议另一种方法吗

编辑1

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

编辑2


请检查我的另一个部门,以了解关于示例代码的完整问题的解释。

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


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

在终止旧进程之前,用修改后的代码启动一个新进程如何?那会吗work@RiggsFolly我使用ZeroMQ在主进程和这个后台进程之间进行通信。后台进程绑定到一个特定的TCP端口,比如555。现在,如果我尝试启动一个新进程,并尝试将它绑定到同一个端口,它会给出一个错误,因为该端口已经在使用中。因此,我需要在启动新进程之前终止该进程。PHP脚本在执行开始时加载一次。似乎没有办法解决这个问题。如果您的后台进程是一个持续循环,您可以将循环中的代码分离到另一个文件中,并通过
exec
shell\u exec
调用该文件,这样您就可以在每次迭代中强制重新加载脚本。@apokryfos请查看我的问题,这是同一问题的更深入版本。我想你能帮我解决这个问题。如果你的代码在绑定过程中循环,直到它得到连接,它会工作吗。然后,旧进程一被终止,新进程就会恢复