[踩坑] Swoole 4.2 协程
首先注意
'enable_coroutine' => false, // 是否自动开启协程 默认 true |
我当然false 手动 go 调用协程 先踩小坑
go(): Using Xdebug in coroutines is extremely dangerous, please notice that it may lead to coredump! i |
写了个接口测试下 就抛错了 , xdebug 不让用 说危险…
今天填下坑 2019/01/09 韩大大来做分享, 顿时觉得协程好牛逼!! 因为协程可以无限起.
Demo 示例:
public function coTest() |
php cli.php Tests coTest |
屌屌的 同一秒结束任务, 厉害了. 试想下以后写爬虫, 大流量访问worker 数不足等场景 都可以解决了, 只要内存足够, 协程就可以无限生成.
Swoole 4.2.3 以后 还有 使用 Swoole\Runtime::enableCoroutine() 方法 可以使原生方法:
可用列表
redis扩展 |
其他方法只能等更新了 , swoole & php 以后会越来越好, 感谢热爱开源, 乐于分享的人.
2019/01/21 更新下新踩到的坑
我写了这样一个服务 里面接口有大量的代理请求中转接口 A 和 协程调用第三方接口 B.
在测试环境少量请求时效果不错, 使用协程大大的降低了 调用 B 接口的响应时间, 单在测试环境中全量测试, 大量的请求 A 接口,
因为并没有做worker 进程分配规则, 都是随机分配, 导致 协程调用 B 接口 特别慢, 经过测试找出原因应该就是 B 接口协程调用因为IO操作会让出worker进程给 A 接口请求.
参考地址: https://wiki.swoole.com/wiki/page/965.html
2019-09-04
协程服务注意事项 :
昨天测试服务修改 max_request = 1 导致大量协程请求失效, 该参数目的实现热更新不用重启swoole 服务即可更新代码 测试环境使用. 但使用协程服务时, worker 将任务丢入协程后 边重启….. 回包失败导致大量请求超时(进程死亡未主动挥手)…
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leon!
评论




