【php】Swoft的HttpServer启动及请求工作流程(二)--Server的setting及回调函数
Swoft的HttpServer启动及请求工作流程(二)--Server的setting及回调函数
马尔科夫尼可夫发布于 2020-12-09
前文讲到swoft创建了异步http-server,然后在调用server->set()前开启了一键协程化.
开启协程后,swoft对Server进行了一系列初始化设置,并且调用与之对应的生命周期钩子函数.
设置Server的基础配置:
设置Server的事件回调(由于打印结果非常长,此处只截取部分信息):
start回调:
onStart方法继承于:\Swoft\Server\Server
文件目录/vendor/server/src/Server.php
值得一题的是onStart代码中在设置完pid等系统参数后,开启了一个协程去执行用户注册的监听事件.也就是说用户注册的start事件是在协程环境下执行的:
shutdown回调:
与onStart类似,也是Server类实现了onShutdown方法,并且以协程方式执行用户注册的回调,不过开启协程的方式不同:
managerStart回调:
onManagerStart方法继承于Server类,代码中特别提醒了不能在manager进程中使用协程,所以回调事件是同步执行:
managerStop回调:
与managerStart一样,manager进程内不能使用协程:
workerStart回调:
回调内判断了是否在协程环境:
workerStop回调:
在协程内调用用户注册事件回调:
workerError回调:
发生error的worker有可能是manager程序,所以此回调不使用协程:
接下来的3个回调事件只指定了处理的对象,没有指定处理的方法,具体添加事件到Server的逻辑参考addEvent方法:
request回调:
对应处理方法:/vendor/swoft/http-server/src/Swoole/RequestListener.php
:
服务启动后,每一个请求都会经由此方法将swoole原生Request和Response对象进行封装后交给dispatcher去调度执行.关于此处的调度执行流程,会写在后面的专题章节中.
task回调:
对应处理方法:/vendor/swoft/task/src/Swoole/TaskListener.php
:
finish回调:
此处调用的是Task的FinishListener:
总结:
1.swoft的http-server中使用到的swoole回调一共10种,分别是onStart、onShutdown、onManagerStart、onManagerStop、onWorkerStart、onWorkerStop、onWorkerError、onRequest、onTask、onFinish.2.一般用户注册的回调事件会放在协程内执行,但涉及到manager进程的不会,swoole不允许在manager进程内开启协程.
3.onTask、onFinish是针对task进程设置的回调.
phpswooleswoft
阅读 119发布于 2020-12-09
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
马尔科夫尼可夫
酷白发,小酒窝,主角标配的帅小伙~
7 声望
2 粉丝
马尔科夫尼可夫
酷白发,小酒窝,主角标配的帅小伙~
7 声望
2 粉丝
宣传栏
前文讲到swoft创建了异步http-server,然后在调用server->set()前开启了一键协程化.
开启协程后,swoft对Server进行了一系列初始化设置,并且调用与之对应的生命周期钩子函数.
设置Server的基础配置:
设置Server的事件回调(由于打印结果非常长,此处只截取部分信息):
start回调:
onStart方法继承于:\Swoft\Server\Server
文件目录/vendor/server/src/Server.php
值得一题的是onStart代码中在设置完pid等系统参数后,开启了一个协程去执行用户注册的监听事件.也就是说用户注册的start事件是在协程环境下执行的:
shutdown回调:
与onStart类似,也是Server类实现了onShutdown方法,并且以协程方式执行用户注册的回调,不过开启协程的方式不同:
managerStart回调:
onManagerStart方法继承于Server类,代码中特别提醒了不能在manager进程中使用协程,所以回调事件是同步执行:
managerStop回调:
与managerStart一样,manager进程内不能使用协程:
workerStart回调:
回调内判断了是否在协程环境:
workerStop回调:
在协程内调用用户注册事件回调:
workerError回调:
发生error的worker有可能是manager程序,所以此回调不使用协程:
接下来的3个回调事件只指定了处理的对象,没有指定处理的方法,具体添加事件到Server的逻辑参考addEvent方法:
request回调:
对应处理方法:/vendor/swoft/http-server/src/Swoole/RequestListener.php
:
服务启动后,每一个请求都会经由此方法将swoole原生Request和Response对象进行封装后交给dispatcher去调度执行.关于此处的调度执行流程,会写在后面的专题章节中.
task回调:
对应处理方法:/vendor/swoft/task/src/Swoole/TaskListener.php
:
finish回调:
此处调用的是Task的FinishListener:
总结:
1.swoft的http-server中使用到的swoole回调一共10种,分别是onStart、onShutdown、onManagerStart、onManagerStop、onWorkerStart、onWorkerStop、onWorkerError、onRequest、onTask、onFinish.2.一般用户注册的回调事件会放在协程内执行,但涉及到manager进程的不会,swoole不允许在manager进程内开启协程.
3.onTask、onFinish是针对task进程设置的回调.
以上是 【php】Swoft的HttpServer启动及请求工作流程(二)--Server的setting及回调函数 的全部内容, 来源链接: utcz.com/a/106814.html
得票时间