• 详细带你了解什么是swoole 热重启?


    1. swoole 服务端文件:swoole_reload_server.php

    <?php
    /**
     * Example for swoole reload php code without shutdowning server.
     *
     * @author Lancelot https://github.com/LinkedDestiny
     */
    class Server
    <?php
    /**
     * Example for swoole reload php code without shutdowning server.
     *
     * @author Lancelot https://github.com/LinkedDestiny
     */
    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();

    2.重启服务脚本:reload.sh

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

    3.重启测试页: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";
    }

    操作流程如下

    4e4f2aa12de8a9771f25c77b9b01dae7.png

    这个时候 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";
    }

     那么我们开始修改 再执行.sh脚本 看看是否有变化

    尝试修改为

    e24f478a481a44ed827e2842d1a9ae40.png

    然后执行脚本呢  脚本 记得 chmod a+x 授权一下 

    c2332d76f400a84ec74fb3310aea5b3f.png

    发现这个原来的sever改变了 

    63e73a4ebeb51ff6ebcaaf523d91a5b6.png

    变成了 i‘m  fun  这里没加换行  大概就这样实现了热重启 

    求一键三连:点赞、转发、在看

    084acbcfbb7d2c1b076f1084ab3ca205.png

  • 相关阅读:
    IDEA 2018 搭建 Spring MVC helloworld
    Intellij IDEA创建Spring的Hello World项目
    浅谈finally使用坑。
    ArrayList源码分析
    Spring依赖注入的四种方式(重点是注解方式)
    Spring常用的三种注入方式
    interview question
    待提高问题
    myeclipse svn 在线安装
    《SQL 进阶教程》 自连接排序
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15847755.html
Copyright © 2020-2023  润新知