Workerman发布5.1版本 Webman发布2.1版本,协程支持

walkor

Workerman发布5.1版本

  • 要求PHP>=8.1
  • 提供Workerman\Coroutine类,底层自动适配Swoole、Swow、Fiber协程
  • 提供协程相关的组件,例如 Context Channel Barrier Parallel WaitGroup Locker Pool等,底层自动适配Swoole、Swow、Fiber协程

workerman协程文档

Webman发布2.1版本

  • 要求PHP>=8.1
  • 依赖Workerman 5.1
  • 支持Workerman 5.1的协程及组件
  • 数据库、redis等库的改造

webman 2.1协程组件

webman v2.1 已经提供了以下组件,它们都集成了连接池,支持在协程和非协程环境下使用

注意事项

升级后不会自动使用协程,需要设置eventLoop才会开启协程,直接升级对业务没有影响。
如果有使用数据库 redis等组件,需要同步升级,参见升级到v2.1

相关文档

升级到v2.1
webman协程

最后

协程并非银弹,它有自己的局限性,引入协程会带来全局变量污染问题、资源竞争问题、调试困难问题。
从压测数据来看,在充分利用CPU的情况下,引入协程极限性能一般会下降10-20%。
但是在有慢IO业务中,引入协程确实会大幅度提升性能。

建议

  • 协程不是必须的
  • 旧项目不建议无脑开启协程,这有可能带来因全局变量污染问题导致的数据错乱
  • 新项目可以考虑使用协程,但是没有必要为了协程而使用协程
  • 旧项目遇到慢IO相关的业务可以考虑单独启动一组进程开启协程处理,参考webman协程与非协程混合部署
3097 26 9
26个回答

Tinywan

牛啊

Workerman[start.php] start in DEBUG mode
-------------------------------------------- WORKERMAN ---------------------------------------------
Workerman/5.1.0         PHP/8.2.10 (Jit off)          Linux/5.15.167.4-microsoft-standard-WSL2
--------------------------------------------- WORKERS ----------------------------------------------
event-loop  proto       user        worker      listen                 count       state            
event       tcp         root        webman      http://0.0.0.0:8201    24           [OK]            
event       tcp         root        monitor     none                   1            [OK]            
----------------------------------------------------------------------------------------------------
  • 暂无评论
chaz6chez

👍!

  • 暂无评论
AnT2077

牛牛牛

  • 暂无评论
learner

给力!只要eventloop不配置就不会启用协程吧

  • 暂无评论
咸鱼不咸

升级升级

  • 暂无评论
Madman

这个必需顶!

  • 暂无评论
glitter

支持

  • 暂无评论
shanyi

棒呆~

  • 暂无评论
不败少龙

6666

  • 暂无评论
liziyu

🐂 Db

  • 暂无评论
xiaoming

十分强大
对心智要求还好

  • 暂无评论
rbb

  • 暂无评论
liudada1204

牛牛牛

  • 暂无评论
ccc

6666

  • 暂无评论
pengzhen

大佬,什么叫有慢io的业务?操作数据库,有redis请求,还有登录和支付需要调用第三方接口,这些算慢io吗?看文档,没有提供根据协程id获取协程上下文的方法,如果用的swoole驱动,协程里有协程,怎么获取父协程上下文

  • 暂无评论
hunma

帅,直接升级

  • 暂无评论
saithink

强的离谱!

  • 暂无评论
wocall

后面的几个小升级,对我来说都用不上😄

  • 暂无评论
phpcreeper

👍👍

  • white 2025-02-14

    老大,Webman 2.1版本 二进制打包是否有支持swoole拓展哈

  • walkor 2025-02-14

    没包含

sunsgne

使用MongoDB的时候必须再使用之前执行一次默认数据库的操作。不然会报错Error-Call to a member function connection() on null; 临时解决方案在support/bootstrap.php 里面初始化一下链接。简单分析原因应该是在数据库连接池哪一块可能忽略了对MongoDB的初始化

  • walkor 24天前

    刚刚测试没问题

  • sunsgne 21天前

    // 正常入库
    Db::connection('mongo')->table('channel_report_error_log')->insert(['time' => time()]);

    // 不能入库,报错Error-Call to a member function connection() on null; 如果再此行上面添加\support\Db::select('select 1');能正常入库
    ChannelReportErrorLog::query()->insert([
    'timestamp' => time(),
    ]);

Jason X

webman中process进程使用组件workerman/http-client,若想启用协程需要设置eventLoop不?

  • walkor 20天前

    任何进程开启协程都需要设置eventLoop

  • Jason X 20天前

    好的,前段时间用workerman5.0没设置也行,我升级下项目版本试试

  • Jason X 19天前

    大佬,问下webman/redis-queue组件支持设置协程了不?

  • walkor 19天前

    支持

  • Jason X 19天前

    谢谢,我升版本测试看看

touer

2.1版本使用二进制还不支持swoole扩展吗?

  • walkor 18天前

    二进制开启swoole后启动界面会出现乱码,目前还没时间定位。

  • touer 18天前

    好的,

holly188

默默的变强!👍👍

  • 暂无评论
qq7467466

太牛了, 必须顶!

  • 暂无评论
会飞的鱼

牛逼

  • 暂无评论
dbyellow

🙌🙌🙌🙌🙌🙌

  • 暂无评论
×
🔝