现有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脚本等).

总结

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


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

查看所有标签

猜你喜欢:

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

Practical JavaScript, DOM Scripting and Ajax Projects

Practical JavaScript, DOM Scripting and Ajax Projects

Frank Zammetti / Apress / April 16, 2007 / $44.99

http://www.amazon.com/exec/obidos/tg/detail/-/1590598164/ Book Description Practical JavaScript, DOM, and Ajax Projects is ideal for web developers already experienced in JavaScript who want to ......一起来看看 《Practical JavaScript, DOM Scripting and Ajax Projects》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

URL 编码/解码