• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-03-01) 28次浏览 已收录 0个评论

前文讲到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过程设置的回调.

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Swoft的HttpServer启动及请求工作流程二Server的setting及回调函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址