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

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

内容简介: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脚本等).

总结

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


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

查看所有标签

猜你喜欢:

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

Introduction to Algorithms, 3rd Edition

Introduction to Algorithms, 3rd Edition

Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest、Clifford Stein / The MIT Press / 2009-7-31 / USD 94.00

Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad ......一起来看看 《Introduction to Algorithms, 3rd Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

HEX CMYK 互转工具