网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
本篇文章给大家带来的内容是关于Swoole自定义项目初始化事件处理如何实现(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
最近使用基于 Swoole 开发的 imi 框架 开发项目,碰到一个需求,就是想要做项目初始化处理。当初始化处理完成前,不想让 Swoole 处理请求。因为可能有一些值没有加载进来,处理请求极有可能出现问题。
下面给出了思考过程及解决问题的demo代码。
首先分析了一下,Swoole 是多进程模式运行的,分为 Master、Manager、Worker 进程。
Master 进程就是我们启动服务的 cli 命令文件所在进程,在这里面初始化有一个问题,这里所有加载的类、全局变量,其它 Worker 进程里都可以使用,无法热重启生效。
Manager 进程的情况基本和上面差不多。
那么只有在 Worker 进程做处理了,但如果写在 WorkerStart 事件里,每个 Worker 进程都会去执行。
WorkerStart 事件定义:
function onWorkerStart(swoole_server $server, int $worker_id);
$worker_id是一个从0-$worker_num之间的数字,表示这个Worker进程的ID