zoukankan      html  css  js  c++  java
  • 详细带你了解什么是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

  • 相关阅读:
    chrome浏览器中安装以及使用Elasticsearch head 插件
    windows10 升级并安装配置 jmeter5.3
    linux下部署Elasticsearch6.8.1版本的集群
    【Rollo的Python之路】Python 爬虫系统学习 (八) logging模块的使用
    【Rollo的Python之路】Python 爬虫系统学习 (七) Scrapy初识
    【Rollo的Python之路】Python 爬虫系统学习 (六) Selenium 模拟登录
    【Rollo的Python之路】Python 爬虫系统学习 (五) Selenium
    【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习
    【Rollo的Python之路】Python 爬虫系统学习 (三)
    【Rollo的Python之路】Python sys argv[] 函数用法笔记
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15847755.html
Copyright © 2011-2022 走看看