首页 » SEO优化 » phpswoole重启技巧_系统架构Swoole是以敕令行的办法运行的若何热更新代码

phpswoole重启技巧_系统架构Swoole是以敕令行的办法运行的若何热更新代码

访客 2024-11-28 0

扫一扫用手机浏览

文章目录 [+]

Swoole 的绝大部分功能只能用于 cli 命令行环境,而在 cli 命令行环境下,一旦进程启动,已解析的 PHP 代码会持久化在进程中,也就意味着启动做事后您再修正的 PHP 代码不会改变已启动的做事。

那Swoole如何更新代码?只好手动重启做事?No。

phpswoole重启技巧_系统架构Swoole是以敕令行的办法运行的若何热更新代码

Swoole 供应了柔性终止 / 重启的机制,管理员只须要向 Server 发送特定的旗子暗记或者调用 reload 方法,事情进程就可以结束,并重新拉起。
如下:

phpswoole重启技巧_系统架构Swoole是以敕令行的办法运行的若何热更新代码
(图片来自网络侵删)

底层逻辑为:

第一步: 向manager进程发送USR1旗子暗记第二步: manager捕获到USR1旗子暗记,会向worker进程发送 TERM旗子暗记。
第三步:worker进程捕获这个TERM信息,就把一个running的标识设置0第四步:woker的事宜循环创造running标识为0,处理完当前逻辑就会自尽(自尽前会回调onWorkerStop函数),第五步:manager再拉起一个新的worker (拉起后会回调onWorkerStart函数)

但有几点要把稳:

首先要把稳新修正的代码必须要在 OnWorkerStart 事宜中重新载入才会生效。
比如,某个类在 OnWorkerStart 之前就通过 composer 的 autoload 载入了便是不可以的。

其次 reload 还要合营这两个参数 max_wait_time 和 reload_async,设置了这两个参数之后就能实现异步安全重启。

如果没有此特性,Worker 进程收到重启旗子暗记或达到 max_request 时,会立即停滞做事,这时 Worker 进程内可能仍旧有事宜监听,这些异步任务将会被丢弃。
设置上述参数后会先创建新的 Worker,旧的 Worker 在完成所有事宜之后自行退出,即 reload_async。

如果旧的 Worker 一贯不退出,底层还增加了一个定时器,在约定的韶光 ( max_wait_time 秒) 内旧的 Worker 没有退出,底层会强行终止。
如下:

如果修正了hot_update_class.php里的干系文件,再实行$serv->reload(),就可以实现热更新了。

如果你利用了autoloader自动加载,那么你可以把autoloader的注册放到onWorkerStart里来。

如果你利用了框架,那么你可以把框架的入口文件放到onWorkerStart里来。

如果你开启了opcache,那么,你可以在onWorkerStop的时候,实行干系的opcache清理事情。

标签:

相关文章

介绍百度网盘,云端存储时代的创新先锋

随着互联网技术的飞速发展,云计算已经成为现代生活不可或缺的一部分。而在这其中,百度网盘作为国内领先的云存储服务提供商,以其卓越的性...

SEO优化 2025-01-03 阅读0 评论0

介绍监控屏蔽技术,守护个人隐私的利器

随着科技的发展,监控设备已经深入到我们生活的方方面面。在享受便利的隐私安全问题也日益凸显。如何有效屏蔽监控,保护个人隐私,成为人们...

SEO优化 2025-01-03 阅读0 评论0

介绍番号观看方法,轻松驾驭影视世界

随着互联网的普及,网络影视资源日益丰富,番号作为影视作品的标识码,已经成为广大观众了解、搜索和观看影视作品的重要途径。如何正确地使...

SEO优化 2025-01-03 阅读0 评论0

介绍盗微信号黑幕,网络安全的严峻挑战

在数字化时代,微信已成为人们生活中不可或缺的通讯工具。随着微信用户数量的激增,盗微信号的事件也日益增多。本文将深入剖析盗微信号的方...

SEO优化 2025-01-03 阅读0 评论0