视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
swoole如何热更新
2020-11-03 18:23:32 责编:小采
文档
 随着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给清空)。

下载本文
显示全文
专题