swoole2——Worker與TaskWorker進程

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']);
相關文章
相關標籤/搜索