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学习笔记]