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']);