一.线程和进程的模型
启动swoole的时候会启动Manager进程和Master进程。对于Manager进程,用于管理Worker进程(我们业务层的逻辑代码一般
放在这里)和Task进程(用于在某个特定的时间或者条件下执行的代码)。对于Master进程,用于底层的开发,后面详细介绍.
二.swoole执行过程
(1)swoole支持的常用的事件列表
事件名称 |
作用 |
onStart |
在启动这个swoole服务器后触发这个事件 |
onShutdown |
在swoole服务器关闭时触发这个事件 |
onWorkerStart |
worker/task进程启动时触发这个事件 |
onWorkerStop |
worker/task进程退出时触发这个事件 |
onTask |
有新的任务等待执行 |
onFinish |
这个任务执行完成时触发这个事件 |
onRecive |
收到了客户端的消息时触发这个事件(重点) |
onConnect |
客户端和服务端建立连接时触发这个事件 |
onClose |
客户端和服务端断开连接时触发这个事件 |
onRequest |
客户端发起http请求时触发这个事件 |
(2)swoole执行流程中的几个需要注意的点
1. 在这个swoole服务器启动后,会创建三个进程
* Manager
* Worker
* Task
2.这个Manager进程是Worker进程的守护进程,在这个Worker进程意外结束后,这个Manager进程会重新启动Workder进
程,Manager进程只有一个,而这个Worker可以有多个。
3.Worker进程通过给这个Task进程发送任务,可以把一些计算量大的任务转移到Task进程,这样我们的Worker进程就可以
高速处理客户端的请求,提高并发量。
4.reactor线程是swoole底层处理高并发,最大限度的调用底层资源。
三.搭建http服务器
(1)代码说明
<?php
$serv = new swoole_http_server('0.0.0.0',8000);
$serv->on('request',function($request,$response){
var_dump($request);
var_dump($response);
$response->end("hello world");
});
$serv->start();
(2)linux操作小提示
ps -aux | grep http-server.php
kill -s 9 `ps -aux | grep http-server | awk '{print $2}'`
(3)swoole程序编写流程
1. 创建swoole服务器对象
2. 为这个对象设置回调函数
3. 启动swoole服务器