PHP多进程模型之Swoole扩展

Swoole提供PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写。

下面介绍一个简单例子:

1、实例分析

我们来使用实例进行分析:

/**
* 启动服务
*/
public function start()

$serv = new \swoole_server('127.0.0.1', '9501', SWOOLE_PROCESS, SWOOLE_SOCK_TCP);//默认是多进程模式、TCP类型
        $serv->on('connect', array($this, 'onConnect'));
        $serv->on('receive', array($this, 'onReceive'));
        $serv->on('close', array($this, 'onClose'));
        $serv->set(array(
            'worker_num' => 4, //启动4个work进程
            'daemonize' => true,//是否后台运行
            'reactor_num'=>2,
        ));
        $serv->start();
}

继续在Shell中输入以下命令:

[finance@localhost user]$ pstree -ap|grep start.php
  |-php,23358 start.php
  |   |-php,23359 start.php
  |   |   |-php,23362 start.php
  |   |   |-php,23363 start.php
  |   |   |-php,23364 start.php
  |   |   `-php,23365 start.php

所有进程的根进程(23358),就是所谓的Master进程;而23359进程,则是Manager进程;最后的进程(23362-23365),是Worker进程。

事实上,一个多进程模式下的Swoole Server中,有且只有一个Master进程;有且只有一个Manager进程;却可以有n个Worker进程。

2、如果以SWOOLE_BASE模式启动,输入以下命令:

[finance@localhost user]$ pstree -ap|grep start
  |-php,24112 start.php
  |   |-php,24113 start.php
  |   |-php,24114 start.php
  |   |-php,24115 start.php
  |   `-php,24116 start.php

这种模式就是传统的异步非阻塞Server。在Reactor内直接回调PHP的函数。worker_num参数对与BASE模式仍然有效,swoole会启动多个Reactor进程。

 

 

 

 

参考文献:[swoole学习笔记]

posted @ 2018-01-25 20:31  libohay  阅读(664)  评论(0编辑  收藏  举报