• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php使用goto实现自动重启swoole、reactphp、workerman服务的代码

    在平时使用swoole进行开发中,常常遇到这种问题,改了代码之后,手动ctrl+c中断服务,再敲命令重启服务。频繁地重启,感觉心很累。

    php提供了inotify扩展,调用linux的inotify系统调用,监控文件的变化.

    这时候就产生了一个想法,我开一个主进程监控文件变化,再开一个子进程运行swoole服务。主进程监听到文件变化之后,干掉子进程,然后再开一个子进程运行swoole服务. 子进程如果想优雅地退出,安装个信号处理器,在退出之前做一些操作。

    ?php
    
    //index.php
    
    require './vendor/autoload.php';
    
    Restart:
    
    $pid = pcntl_fork();
    
    if ($pid > 0) {
      $fd = inotify_init();
      $watch_descriptor = inotify_add_watch($fd, './src/', IN_MODIFY);
    
      $events = inotify_read($fd);
    
      posix_kill($pid, SIGTERM);
      
      fclose($fd);
    
      pcntl_wait($status);
    
      goto Restart;
    } elseif ($pid == 0) {
      \Church\Application::run();
    } else {
      exit(0);
    }
    ?php
    namespace Church;
    
    /**
    use Psr\Http\Message\ServerRequestInterface;
    use React\Http\Response;
    use React\Http\Server;
    **/
    
    class Application
    {
      public static function run()
      {
      /**
        $loop = \React\EventLoop\Factory::create();
    
        $loop->addSignal(SIGTERM, function() use ($loop) {
          $loop->stop();
        });
    
        $server = new Server(function (ServerRequestInterface $request) {
    
          return new Response(
            200,
            array(
              'Content-Type' => 'text/plain'
            ),
            "Hello World1!\n"
          );
        });
    
        $socket = new \React\Socket\Server(8080, $loop);
        $server->listen($socket);
    
        $loop->run();
      **/
        //高性能HTTP服务器
        $http = new \Swoole\Http\Server("127.0.0.1", 9501);
    
        $http->on("start", function ($server) {
          echo "Swoole http server is started at http://127.0.0.1:9501\n";
        });
    
        $http->on("request", function ($request, $response) {
          $response->header("Content-Type", "text/plain");
          $response->end("Hello World1\n");
        });
    
        $http->start();
    
      }
    }

    个人觉得这里最优雅的实现方式应该是用GOTO了。

    到此这篇关于php使用goto实现自动重启swoole、reactphp、workerman服务的代码的文章就介绍到这了,更多相关php自动重启swoole、reactphp、workerman服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • windows系统php环境安装swoole具体步骤
    • php使用Swoole实现毫秒级定时任务的方法
    • PHP用swoole+websocket和redis实现web一对一聊天
    • PHP Swoole异步读取、写入文件操作示例
    • PHP之Swoole学习安装教程
    上一篇:yii2.0框架多模型操作示例【添加/修改/删除】
    下一篇:PHP 对象接口简单实现方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php使用goto实现自动重启swoole、reactphp、workerman服务的代码 php,使用,goto,实现,自动,