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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php中Swoole的热更新实现代码实例

    使用swoole_http_server替代php-fpm后,由于php长驻内存,修改了代码不能实时调试,需要去手动去重启服务,很是不方便,决定使用inotify来监控文件状态的改变,来给swoole发送reload信号,来实现swoole的热更新。

    如何安装inotify就不写了,安装之后可以建立一个脚本文件,如php_reload.sh:

    #!/bin/sh
    # src 需要监控的地址
    src=/home/server/Project/test/app/
    /usr/bin/inotifywait -rmq -e create,modify,delete $src | while read event
     do
        /home/server/Project/test/bin/httpserver reload
     done

    linux shell 写swoole重启脚本

    代码如下

    #!/bin/sh
    kill `lsof -t -i:9501`
    sleep 2
    php /data/web/mircoweb/wwwroot/Public/swoole.php
    sleep 1
    netstat -ntlp

    如果不支持lsof命令 那就yum install lsof安装下吧

    swoole服务平滑重启

    1. reload.sh脚本

    echo "loading..."
    pid="pidof live_name"
    echo $pid
    kill -USR1 $pid
    echo "loading success"

    2. linux中执行

    sh  reload.sh
    代码用的原来只是自己加了一些操作流程

    swoole_reload_server.php

    ?php
    class Server
    {
            private $serv;
            public function __construct() {
            $this->serv = new swoole_server("0.0.0.0", 9501);
            $this->serv->set(array(
                'worker_num' => 8,
                'daemonize' => false,
                'max_request' => 10000,
                'dispatch_mode' => 2,
                'debug_mode'=> 1,
            ));
            $this->serv->on('Start', array($this, 'onStart'));
            $this->serv->on('WorkerStart', array($this, 'onWorkerStart'));
            $this->serv->on('Connect', array($this, 'onConnect'));
            $this->serv->on('Receive', array($this, 'onReceive'));
            $this->serv->on('Close', array($this, 'onClose'));
            $this->serv->start();
        }
        public function onStart( $serv ) {
            echo "Start\n";
            cli_set_process_title("reload_master");
        }
        public function onWorkerStart( $serv , $worker_id) {
            require_once "reload_page.php";
            Test();
        }
        public function onConnect( $serv, $fd, $from_id ) {
            echo "Client {$fd} connect\n";
     
        }
        public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
            echo "Get Message From Client {$fd}:{$data}\n";
        }
        public function onClose( $serv, $fd, $from_id ) {
            echo "Client {$fd} close connection\n";
        }
    }
    new Server();

    reload.sh

    echo "Reloading..."
    cmd=$(pidof reload_master)
     
    kill -USR1 "$cmd"
    echo "Reloaded"

    reload_page.php 

    ?php
    /**
     * If you change this function and want
     * swoole_server to use the new function,
     * just run 'reload.sh' to send a restart
     * signal to swoole_server.
     */
    function Test() {
      echo "This is not a php file\n";
    }

    到此这篇关于php中SWOOLE的热更新实现代码实例的文章就介绍到这了,更多相关php中SWOOLE的热更新实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 详解PHP Swoole与TCP三次握手
    • Swoole扩展的6种模式深入详解
    • swoole锁的机制代码实例讲解
    • windows系统php环境安装swoole具体步骤
    • linux系统虚拟主机开启支持Swoole Loader扩展的方法
    • Swoole源码中如何查询Websocket的连接问题详解
    • 在Windows系统上安装Cygwin搭建Swoole测试环境的图文教程
    • php使用goto实现自动重启swoole、reactphp、workerman服务的代码
    • Centos7安装swoole扩展操作示例
    • 详解Swoole TCP流数据边界问题解决方案
    上一篇:PHP安装扩展mcrypt以及相关依赖项深入讲解
    下一篇:Swoole扩展的6种模式深入详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    php中Swoole的热更新实现代码实例 php,中,Swoole,的,热,更新,