hi,你好!欢迎访问本站!登录
本站由阿里云强力驱动
当前位置:首页 - 文章 - php框架 - 正文 佛曰:你二大爷还是你二大爷。

swoole怎样腻滑重启_PHP开发框架教程,swoole

2019-12-07php框架ki4网7°c
A+ A-

swoole 腻滑重启

在swoole中,我们能够向主历程发送种种差别的信号,主历程依据接收到的信号范例做出差别的处置惩罚。比方下面这几个

SIGTERM,一种文雅的停止信号,会待历程实行完当前顺序以后中断,而不是直接干掉历程 (引荐进修: swoole视频教程)

SIGUSR1,将安稳的重启一切的Worker历程

SIGUSR2,将安稳的重启一切的Task历程

假如我们要完成重启server,只需要向主历程发送SIGUSR1信号就好了。

腻滑重启的道理是当主历程收到SIGUSR1信号时,主历程就会向一个子历程发送平安退出的信号,所谓的平安退出的意义是主历程并不会直接把Worker历程杀死,而是等这个子历程处置惩罚完手上的事情以后,再让其荣耀的“退休”,末了再拉起新的子历程(从新载入新的PHP顺序代码)。

然后再向其他子历程发送“退休”敕令,就这样一个接一个的重启一切的子历程。

我们注意到,腻滑重启实际上就是让旧的子历程逐一退出并从新建立新的历程。为了在腻滑重启时不影响到用户,这就请求历程中不要保留用户相干的状况信息,即营业历程最好是无状况的,防止因为历程退出致使信息丧失。

觉得很优美的模样,通常重启只需简朴的向主历程发送信号就完事了呗。

抱负很饱满,实际并非如此。

在swoole中,重启只能针对Worker历程启动以后载入的文件才有用!什么意义呢,就是说只要在onWorkerStart回调以后加载的文件,重启才有意义。在Worker历程启动之前就已加载到内存中的文件,假如想让它从新见效,照样只能乖乖的封闭server再重启。

说了这么多,我们写个例子看看究竟怎样向主历程发送SIGUSR1信号以便有用重启Worker历程。

起首我们建立一个Test类,用于处置惩罚onReceive回调的数据,为何要把onReceive回调的营业拿出来零丁写,看完例子你就邃晓了。

<?php

class Test
{
    public function run($data)
    {
        echo $data;
    }
}

在Test::run要领中,我们第一步仅仅是echo输出swoole_server接收到的数据。

当前目录下我们建立一个swoole_server的类NoReload.php

<?php
require_once("Test.php");
class NoReload
{
    private $_serv;
    private $_test;
    /**
     * init
     */
    public function __construct()
    {
        $this->_serv = new Swoole\Server("127.0.0.1", 9501);
        $this->_serv->set([
            'worker_num' => 1,
        ]);
        $this->_serv->on('Receive', [$this, 'onReceive']);
        $this->_test = new Test;
    }
    /**
     * start server
     */
    public function start()
    {
        $this->_serv->start();
    }
    public function onReceive($serv, $fd, $fromId, $data)
    {
        $this->_test->run($data);
    }
}
$noReload = new NoReload;
$noReload->start();

迥殊提示:我们在初始化swoole_server的时刻的写法是定名空间的写法

new Swoole\Server

该种作风的写法等同于下划线写法 ,swoole对这两种作风的写法都支撑

new swoole_server

另外我们看下server的代码逻辑:类定义之前require_once了Test.php,初始化的时刻设置了一个Worker历程,注册了NoReload::onReceive要领为swoole_server的onReceive回调,在onReceive回调内接收到的数据传递给了Test::run要领处置惩罚。

以上就是swoole怎样腻滑重启的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
swoole怎样腻滑重启_PHP开发框架教程,swoole

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>