swoole如何热更新

发布时间 - 2019-12-07 00:00:00    点击率:

随着swoole的版本迭代更新,已经足够稳定了,在阿里,腾讯,yy等各大公司都有着使用,也有很多游戏圈里的朋友也在使用,这些朋友经常会提到一个问题,每次代码更新还需要停止服务,然后重新启动,来达到更新代码,然而这种做法,是比较粗暴的。

其实swoole里提供reload的特性,完全支持代码的热更新。

在介绍swoole的reload之前,先简要的讲讲web方式是如何改了文件就立即生效的:

几个概念:                      (推荐学习: swoole视频教程)

1) sapi:可以简单的理解为php引擎对外的一个统一接口,使得php可以和外部程序进行交互

2) php的生命周期中关键四个调用:MINT -> RINT -> RSHUTDOWN -> MSHUTDOWN

3)  fpm : fastcgi进程管理器

那么fpm方式的流程就是: fpm通过sapi接口与php进程交互,在fpm启动的时候,

第一步: 会调用各扩展的MINT方法,进行一些数据初始化(长驻内存),

第二步: 每个请求过来,先会执行RINT对单个请求行一个初始化,

第三步: 执行php脚本,

第四步: 执行RSHUTDOWN方法,

第五步: 如果你要停止fpm了,才会执行MSHUTDOWN。

fpm对每个请求的处理都是一直在在重复执行 2~4步 。

在第三步中, php的脚本是动态执行的,由于每次都要执行一次php脚本,而每次php脚本都要有一个把php文件翻译成opcode的流程(比较耗时), 于是就产生的opcache工具。

opcache:  直接把php翻译后的opcode代码树保存到共享内存中,以便直接使用,从而减少每次都把php翻译成opcode的开销。

opcache的问题:按照他的描述,修改了php文件,并不能立即被更新,

opcache的解决方案:有一个配置来设置隔多长时间检测文件是否更新了,从而有机会在第二步重新来reload相关的文件.

当然,你也可以直接reload fpm,从而达到php热更新的效果(opcache扩展可以在第四步把相关的opcode cache给清空)。


# swoole  # php  # 接口  # 都要  # 第二步  # 第三步  # 翻译成  # 第四步  # 都是  # 几个  # 有一  # 也有  # 你要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何获取上海专业网站定制建站电话?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  网站制作软件有哪些,制图软件有哪些?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  图册素材网站设计制作软件,图册的导出方式有几种?  北京企业网站设计制作公司,北京铁路集团官方网站?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  zabbix利用python脚本发送报警邮件的方法  如何在万网ECS上快速搭建专属网站?  Android利用动画实现背景逐渐变暗  焦点电影公司作品,电影焦点结局是什么?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  LinuxCD持续部署教程_自动发布与回滚机制  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何在万网开始建站?分步指南解析  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  教你用AI润色文章,让你的文字表达更专业  Python文件流缓冲机制_IO性能解析【教程】  如何自定义建站之星模板颜色并下载新样式?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  黑客如何通过漏洞一步步攻陷网站服务器?  历史网站制作软件,华为如何找回被删除的网站?  米侠浏览器网页背景异常怎么办 米侠显示修复  如何在宝塔面板创建新站点?  Laravel Docker环境搭建教程_Laravel Sail使用指南  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何升级到最新版本?(升级指南和步骤)  如何基于云服务器快速搭建个人网站?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  JS实现鼠标移上去显示图片或微信二维码  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  重庆市网站制作公司,重庆招聘网站哪个好?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在VPS电脑上快速搭建网站?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  桂林网站制作公司有哪些,桂林马拉松怎么报名?