swoole 里面的事件绑定怎么理解

swoole on函数事件绑定的理解

public function run_pre()
    {
        set_error_handler(array($this, 'error_handler'));

        $serv = new swoole_http_server($this->host, $this->port);
        $serv->set($this->setargv);
        $serv->on('Start', array($this, 'onStart'));
        $serv->on('ManagerStart', array($this, 'onManagerStart'));
        $serv->on('WorkerStart', array($this, 'onWorkerStart'));
        $serv->on('WorkerError', array($this, 'onWorkerError'));
        $serv->on('Request', array($this, 'onRequest'));
        return $serv;
    }

    function run()
    {
        $serv = $this->run_pre();
        $serv->start();
    }

    public function onStart($serv)
    {
       //代码执行
    }

里面的$serv->on('Start', array($this, 'onStart'));怎么调用public function onStart($serv)

阅读 4.2k
6 个回答

只能打个比方的回答,具体的执行是需要看swoole源码才能说明的。

$server 是 SwooleServer 对象,就好比电话线路

用户可以在电话线路上,接入电话座机,就好比调用 $server->on()

接入的时候,需要告诉电话线路,你的座机号码是什么 也就是 $server->on('event')

当有电话进来的时候,你就可以接电话,处理电话内容了,也就是 $server->on('event', function(){处理中心})

$serv->on('Start', array($this, 'onStart'));

上述代码,表示的就是,当server接受到start事件时,调用 $this对象的 onStart 方法(function)

$serv->on的第二个参数是个callable, callable可以是用户自定义函数,PHP内建函数,对象的方法,类的静态方法。

是否相当于是否这样的呢?

$serv->on('Start', function($ws,$fd){
    $this->onStart($ws,$fd);
});
function onStart($ws,$fd){
    //TODO
}

开启进程进行监听事件,如果有广播,就触发。类似,我在大街上喊一声美女,然后满大街女孩子都回头看我一样。

swoole是以事件驱动的框架

请教问题,swoole重启worker进程,但是swoole事件里边的业务逻辑没有改变

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题