现有PHP项目引入Swoole4协程支持的流程及难点

栏目: PHP · 发布时间: 5年前

内容简介:Swoole4之后,协程化支持已经完善,并且支持大量的PHP扩展自动协程化.一些基于Swoole4的框架也蓬勃发展,光看着文档就让人跃跃欲试.但是对于现有旧项目如何引入并启用Swoole协程成了实际场景中的客观问题,由于协程性质及生命周期等原因,这并非想象的那么容易.本文整理了在现有项目中引入Swoole4并开启协程的一些步骤及需要注意的问题,期望可以为有需要的人提供帮助.

Swoole4之后,协程化支持已经完善,并且支持大量的 PHP 扩展自动协程化.一些基于Swoole4的框架也蓬勃发展,光看着文档就让人跃跃欲试.

但是对于现有旧项目如何引入并启用Swoole协程成了实际场景中的客观问题,由于协程性质及生命周期等原因,这并非想象的那么容易.

本文整理了在现有项目中引入Swoole4并开启协程的一些步骤及需要注意的问题,期望可以为有需要的人提供帮助.

前置要求

请阅读Swoole文档中 环境依赖 的章节,本文只针对代码部分的调整.下文默认已成功编译安装了Swoole4扩展.

框架代码部分

首先请查阅所用框架是否有结合Swoole的开源方案,如laravel-s等.如有可按需选用,如没有也参照业务代码部分对框架代码进行改造.( 这会导致升级框架版本变困难 )

业务代码部分

  1. 首先阅读Swoole文档中 协程编程须知 的章节.
  2. 对单例对象按协程ID做隔离,防止单例对象跨协程使用.对Mysql,Redis等连接资源需要defer进行回收复用或关闭,防止连接数持续增加.
  3. 对全局变量及常量做评估,所有可能引起问题的地方全部按协程ID做隔离.
  4. 对项目内直接echo,print之类输出的位置做修改,或使用ob_start方法进行获取输出内容进行处理.
  5. 对项目内使用不支持自动协程化的库做修改,采用协程客户端进行替换.(如:curl).
  6. 对项目内使用exit,die的地方做修改.
  7. 对static静态类,属性或变量及引用传递进协程的变量都要小心操作,尽量避免这种情况,只使用局部变量.
  8. 对每次修改做好单元测试,做好备份及回滚措施.
  9. 可从某些单一场景下入手逐步进行修改.(如:某个单一业务模块,某个简单PHP脚本等).

总结

上述修改看似内容不多,但是在一个现有的项目中进行修改并保证服务正常运行却并非易事,希望大家小心操作,早日成功.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能Python

高性能Python

(美)戈雷利克、(英)欧日沃尔德 / 东南大学出版社 / 2015-2

你的Python代码也许运行正确,但是你需要运行得更快速。通过探讨隐藏在设计备选方案中的基础理论,戈雷利克和欧日沃尔德编著的《高性能Python》将帮助你更深入地理解Python的实现。你将了解如何定位性能瓶颈,从而显著提升高数据流量程序中的代码执行效率。 你该如何利用多核架构和集群?或者你该如何搭建一个可以自由伸缩而不会影响可靠性的系统?有经验的Python程序员将会学习到这类问题的具体解......一起来看看 《高性能Python》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具