当前位置: 首页 > 后端技术 > PHP

Swoft之HttpServer启动与请求工作流程(二)--服务器设置与回调函数

时间:2023-03-29 16:54:46 PHP

前面说了swoft创建了一个异步的http-server,然后在调用server->set()之前开启了一键协程。启用协程后,swoft对Server进行了一系列的初始化设置,并调用了相应的Lifecyclehook函数。设置服务器的基本配置:设置服务器的事件回调(由于打印结果很长,这里只截取部分信息):启动回调:onStart方法继承自:\Swoft\Server\Server文件目录/vendor/server/src/Server.php值得一提的是,在onStart代码中,设置pid等系统参数后,会开启一个协程来执行用户注册的监听事件。也就是说,用户注册的启动事件是在协程环境下执行的:协程的启动方式不同:managerStart回调:onManagerStart方法继承自Server类,代码中特别提醒不能在manager进程中使用协程,所以同步执行回调事件:managerStop回调:同managerStart,协程不能在manager进程中使用:workerStart回调:回调判断是否在协程环境中:workerStop回调:调用协程中的用户注册事件回调:workerError回调:错误所在的worker发生的可能是manager程序,所以这个回调没有使用协程:后面三个回调事件只指定对象待处理,不指定处理方法,向服务端添加事件的逻辑参考addEvent方法:请求回调:对应处理方法:/vendor/swoft/http-server/src/Swoole/RequestListener.php:服务启动后,每个请求都会通过这个方法将swoole原生的Request和Response对象封装起来,交给dispatcher调度执行。这里的调度执行过程会在后面的章节中写到。任务回调:对应的处理方法:/vendor/swoft/task/src/Swoole/TaskListener.php:finish回调:这里调用了Task的FinishListener:总结:1.swoft的http-serverswoole回调一共有10种,分别是onStart,onShutdown,onManagerStart,onManagerStop,onWorkerStart,onWorkerStop,onWorkerError,onRequest,onTask,onFinish。2、一般用户注册的回调事件都会在协程中执行,但是不行,swoole不允许在manager进程中启动协程。3、onTask和onFinish是为任务进程设置的回调。