1.swoole 的进程模型swoole
swoole是一个多进程模型的框架,当启动一个进程swoole应用时,一共会建立2+n+m个线程,n为worker进程数,m为TaskWorker进程数,1个master进程和一个manager进程,关系以下图所示网络
Master进程为主进程,该进程会建立Manager进程、Reactor线程等工做进/线程多线程
其中三种进程之间的关系是:并发
Reactor线程:框架
TCP
链接、处理网络IO
、处理协议、收发数据C
代码,除Start
/Shudown
事件回调外,不执行任何PHP代码TCP
客户端发来的数据缓冲、拼接、拆分红完整的一个请求数据包Reactor
以多线程的方式运行Worker进程异步
Reactor
线程投递的请求数据包,并执行PHP
回调函数处理数据Reactor
线程,由Reactor
线程发送给TCP
客户端Worker
以多进程的方式运行TaskWorker进程 函数
Worker
进程经过swoole_server->task/taskwait
方法投递的任务swoole_server->finish
)给Worker
进程TaskWorker
以多进程的方式运行2.swoole代码this
开启taskworker须要配置task_worker_num,task_worker的数量spa
$this->serv->set(['worker_num'=>4,'task_worker_num'=>4,'daemonize'=>false]);
还须要实现回调方法,onTask,onFinish线程
$this->serv->on('Task',[$this,'onTask']); $this->serv->on('Finish',[$this,'onFinish']);