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']);
相关文章
相关标签/搜索