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

标签 php linux cron centos reactphp

我正在使用 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/

    相关文章:

    php - 如何在 Symfony 中的操作之外访问 Request 对象

    linux -/usr/bin/包含 & 符号的 bash 脚本的时间

    linux - crontab 如何在控制台中打印消息?

    python - 使用 Linux ASP 在 Azure 应用服务上使用 Flask 命令进行 Crontab

    php - 完全防止邮件注入(inject)

    php - array to string 转换错误,需要先 explode 再内爆

    linux - 引用其他文件时 COUNTIFS 中的错误 504

    php - 防止从 php mysql 数据库中一遍又一遍地选择相同的数据

    ruby-on-rails - 从 Rails 应用程序中监视数据库表的外部更改

    php - 我如何在 Magento 中订购最新产品?