You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swoole协程上下文赋值后立即为空,原因是什么?

Swoole协程上下文返回NULL问题解决

问题根源

Co::getContext() 只能在协程运行环境中调用,而你在Start事件回调里执行代码时,当前处于主进程的同步非协程环境,没有任何协程实例存在,所以返回NULL是正常行为,和配置无关。

正确使用方式

协程上下文的作用是在同一个协程的不同调用层级间共享数据,必须在协程触发的事件里使用,比如WebSocket的Open、Message事件,或者异步任务、定时器的协程环境中。

示例代码:

$server->on("Open", function(Server $server, $request) 
{
    // 此处为协程环境,可正常操作协程上下文
    Co::getContext()['total'] = 10;
    var_export(Co::getContext()); 
});

补充说明

  • Swoole默认支持协程上下文,不需要额外配置,只要确保在协程环境中调用即可。
  • 如果你需要在主进程(如Start事件)中存储全局数据,直接使用全局变量、类静态属性或者单例类即可,无需借助协程上下文。

内容的提问来源于stack exchange,提问作者zzmaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:17:01