gpt4 book ai didi

php - ReactPHP:使用启动/停止命令运行服务器

转载 作者:行者123 更新时间:2023-12-04 19:40:04 25 4
gpt4 key购买 nike

我正在使用 ReactPHP 创建一个套接字服务器,我需要它永远运行。
我还有一个命令面板,我必须在其中检查进程是否正在运行,我可以停止或启动它(或重新启动它)。
我不知道如何实现这一目标。
我的计划是:

  • 使用播放按钮:使用简单的“php script.php”启动 php 命令 shell_exec。
  • 使用停止按钮,我可以通过两种方式进行操作: 1. 我可以在循环中设置一个计时器,每 5 秒检查一次文件夹内是否有文件(如“stop.lock”),然后停止进程。 2.我可以将进程PID保存在数据库中,因此单击停止按钮我可以杀死进程。
  • 检查在线状态:我可以制作另一个脚本来尝试连接到 IP/端口,如果成功则在线,如果不成功(超时 5 秒)则离线。

  • 我还希望脚本始终处于监听状态,那么如果例如我必须重新启动服务器,我该如何使脚本自动启动?
    我在考虑每分钟尝试连接到服务器的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com