Swoft的HttpServer启动及请求工作流程(二)--Server的setting及回调函数

码农天地 -
Swoft的HttpServer启动及请求工作流程(二)--Server的setting及回调函数

前文讲到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进程设置的回调.
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

phpswooleswoft

扩展阅读

加个好友,技术交流

1628738909466805.jpg