我正在使用 ReactPHP 创建一个套接字服务器,我需要它永远运行。
我还有一个命令面板,我必须在其中检查进程是否正在运行,我可以停止或启动它(或重新启动它)。
我不知道如何实现这一目标。
我的计划是:
我还希望脚本始终处于监听状态,那么如果例如我必须重新启动服务器,我该如何使脚本自动启动?
我在考虑每分钟尝试连接到服务器的 cron;如果失败,它将再次启动 shell_exec('php script.php');
如何处理所有问题的最佳解决方案? (服务器操作系统为 CentOS 7)
最佳答案
正如@Volker 所说,如果您想优雅地停止循环,只需停止循环即可。您可以定期检查文件或查询表,但这不是一个好方法。
一个不错的流程可能是收听管理员消息以停止服务器。当然,您应该注意验证谁可以停止服务器。这样它就可以停止而无需等待运行时间间隔,并且您可以减少定期查询文件系统或数据库的开销。
另一种很酷的方法是使用 RabbitMQ 或类似的队列服务。您只需收听队列服务器,就可以从脚本向 RabbitMQ 发送消息,然后再从那里发送到服务器。
祝你好运!
编辑:如果您使用 systemd 运行您的服务器,处理它的一个好方法可能只是监听系统信号以优雅地停止应用程序。看看addSignal ,您可以通过 pid 处理 kill,也可以通过 systemd 处理。
关于php - ReactPHP:使用启动/停止命令运行服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66945436/