内容简介:Swoole4之后,协程化支持已经完善,并且支持大量的PHP扩展自动协程化.一些基于Swoole4的框架也蓬勃发展,光看着文档就让人跃跃欲试.但是对于现有旧项目如何引入并启用Swoole协程成了实际场景中的客观问题,由于协程性质及生命周期等原因,这并非想象的那么容易.本文整理了在现有项目中引入Swoole4并开启协程的一些步骤及需要注意的问题,期望可以为有需要的人提供帮助.
Swoole4之后,协程化支持已经完善,并且支持大量的 PHP 扩展自动协程化.一些基于Swoole4的框架也蓬勃发展,光看着文档就让人跃跃欲试.
但是对于现有旧项目如何引入并启用Swoole协程成了实际场景中的客观问题,由于协程性质及生命周期等原因,这并非想象的那么容易.
本文整理了在现有项目中引入Swoole4并开启协程的一些步骤及需要注意的问题,期望可以为有需要的人提供帮助.
前置要求
请阅读Swoole文档中 环境依赖 的章节,本文只针对代码部分的调整.下文默认已成功编译安装了Swoole4扩展.
框架代码部分
首先请查阅所用框架是否有结合Swoole的开源方案,如laravel-s等.如有可按需选用,如没有也参照业务代码部分对框架代码进行改造.( 这会导致升级框架版本变困难 )
业务代码部分
- 首先阅读Swoole文档中 协程编程须知 的章节.
- 对单例对象按协程ID做隔离,防止单例对象跨协程使用.对Mysql,Redis等连接资源需要defer进行回收复用或关闭,防止连接数持续增加.
- 对全局变量及常量做评估,所有可能引起问题的地方全部按协程ID做隔离.
- 对项目内直接echo,print之类输出的位置做修改,或使用ob_start方法进行获取输出内容进行处理.
- 对项目内使用不支持自动协程化的库做修改,采用协程客户端进行替换.(如:curl).
- 对项目内使用exit,die的地方做修改.
- 对static静态类,属性或变量及引用传递进协程的变量都要小心操作,尽量避免这种情况,只使用局部变量.
- 对每次修改做好单元测试,做好备份及回滚措施.
- 可从某些单一场景下入手逐步进行修改.(如:某个单一业务模块,某个简单PHP脚本等).
总结
上述修改看似内容不多,但是在一个现有的项目中进行修改并保证服务正常运行却并非易事,希望大家小心操作,早日成功.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Angular-难点
- 工业大数据可视化面临的难点
- 结合实例浅析壳编写的流程与难点
- 微服务架构谈(八):拆分单体应用的难点
- OpenStack 学习有哪些难点?需要哪些知识储备?
- 知识图谱发展的难点&构建行业知识图谱的重要性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。