swoole支持热启动

php中文网
发布: 2016-06-23 13:20:03
原创
2251人浏览过

所谓热重启,就是当服务器相关代码有所变动之后,无需停止服务,而是在服务器仍然运行的状态下更新文件。swoole通过内置的reload函数以及两个自定义信号量实现了这一功能。 首先我讲解一下swoole可用的三个信号:sigterm,sigusr1,sigusr2。sigterm用于停止服务器,sigusr1用于重启全部的worker进程,sigusr2用于重启全部的task worker进程。 那要如何实现热更新代码文件呢?swoole的回调函数中有这个一个回调 onworkerstart ;该回调会在worker进程启动时被调用。因此,当swoole_server收到sigusr1信号并重启全部worker进程后,onworkerstart就会被调用。如果在onworkerstart中require全部的代码文件,每次onworkerstart后都会重新require一次php文件,这样就能实现代码文件的热更新。 来看下代码实现:

public function onStart( $serv ) {    cli_set_process_title("reload_master");}public function onWorkerStart( $serv , $worker_id) {    require_once "reload_page.php";    Test(); // reload_page.php中定义的一个函数}
登录后复制

首先,在 onStart 回调函数中通过php的cli_set_process_title函数设置进程名。 在 onWorkerStart 中,require相关的php文件。 然后,新建一个reload.sh文件,输入如下内容:

echo "Reloading..."cmd=$(pidof reload_master)kill -USR1 "$cmd"echo "Reloaded"
登录后复制

这样,就可以通过执行这个脚本重启服务器了。 点此查看完整源码

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号