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


相关推荐: 如何在建站之星绑定自定义域名?  详解jQuery停止动画——stop()方法的使用  详解Android中Activity的四大启动模式实验简述  如何在万网开始建站?分步指南解析  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何破解联通资金短缺导致的基站建设难题?  Windows Hello人脸识别突然无法使用  如何快速搭建高效WAP手机网站?  网易LOFTER官网链接 老福特网页版登录地址  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何用搬瓦工VPS快速搭建个人网站?  C语言设计一个闪闪的圣诞树  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  北京的网站制作公司有哪些,哪个视频网站最好?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  个人摄影网站制作流程,摄影爱好者都去什么网站?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel怎么使用artisan命令缓存配置和视图  大同网页,大同瑞慈医院官网?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  canvas 画布在主流浏览器中的尺寸限制详细介绍  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何挑选优质建站一级代理提升网站排名?  网站制作免费,什么网站能看正片电影?  在Oracle关闭情况下如何修改spfile的参数  Firefox Developer Edition开发者版本入口  Laravel API资源类怎么用_Laravel API Resource数据转换  Python制作简易注册登录系统  Laravel定时任务怎么设置_Laravel Crontab调度器配置  javascript日期怎么处理_如何格式化输出  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何快速生成橙子建站落地页链接?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Android okhttputils现在进度显示实例代码  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  七夕网站制作视频,七夕大促活动怎么报名?  如何用PHP快速搭建CMS系统?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  js代码实现下拉菜单【推荐】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  做企业网站制作流程,企业网站制作基本流程有哪些?  如何快速启动建站代理加盟业务?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?