资讯专栏INFORMATION COLUMN

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

高胜山 / 2510人阅读

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31763.html

相关文章

  • Swoole4.x探究之多进程TCP协程服务实现

    摘要:有研究过框架的同学就会发现,其实最核心的,就是用了拓展加上拓展来实现其底层的网络服务和多进程调度。我们在模式下,测试起五个进程主进程要等待回收我们,这样就很简单的实现了一个多进程的协程服务。 有研究过Workman框架的同学就会发现,其实workman最核心的,就是用了php socket拓展加上pcntl拓展来实现其底层的网络服务和多进程调度。那我们今天就来探讨如何使用Swoole的...

    ad6623 评论0 收藏0
  • 仿照async/await风格对Swoole4协程简单包装

    摘要:官方文档中对协程的示例大多按照一次请求一个协程或脚本并发大量协程的方式来举例说明这种使用方式下提升的是整体的性能而非单次请求的响应时间要提升单次请求的响应效率或提升非网络服务下脚本代码的运行效率需要在业务代码中主动使用协程来处理那些可并发的 Swoole官方文档中对协程的示例大多按照一次请求一个协程(或脚本并发大量协程)的方式来举例说明,这种使用方式下提升的是整体的性能,而非单次请求的...

    _ivan 评论0 收藏0
  • Swoole4.x之协程变量访问安全与协程连接池实现

    摘要:访问安全问题为什么说有访问安全问题呢传统地,在的的环境中,很少有遇到所谓变量安全访问问题。上下文管理器为了解决这个问题,我们引入协程上下文管理这样的概念,由此来实现每个协程环境内的数据隔离。 访问安全问题 为什么说有访问安全问题呢?传统地,在php的的环境中,很少有Phper遇到所谓变量安全访问问题。举个例子,代码大约如下: class db { protected stati...

    aisuhua 评论0 收藏0
  • PHP 协程:Go + Chan + Defer

    摘要:为语言提供了强大的协程编程模式。提供的协程语法借鉴自,在此向开发组致敬协程可以与很好地互补。并发执行使用创建协程,可以让和两个函数变成并发执行。协程需要拿到请求的结果。 Swoole4为PHP语言提供了强大的CSP协程编程模式。底层提供了3个关键词,可以方便地实现各类功能。 Swoole4提供的PHP协程语法借鉴自Golang,在此向GO开发组致敬 PHP+Swoole协程可以与...

    nidaye 评论0 收藏0
  • Swoole 2019 :化繁为简、破茧成蝶

    摘要:开发负责人创建分支,编写单元测试脚本,编写代码,实现提案中的所有内容,最终发起交叉评审,检查代码,提出改进意见,反馈给开发负责人,继续完善细节。 Swoole开源项目从2012年开始发布第一个版本,到现在已经有近7年的历史。在这七年的时间里: 提交了8821次代码变更 发布了287个版本 收到并解决1161次issue反馈 合并了603次pull request 共有100位开发者...

    adam1q84 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<