webman 内在队列内 如何判断是否存在header?

wo3948

问题描述

一个简单的saas 系统,在 模型基类里面 boot 方法内 判断header 增加 全局查询条件,

protected static function boot(){
        $appId = 0;
        $package = '';

        if(empty(request())) {
            dump('===reqeust===');
//            $appId = request()?->header('App-Id') ?? 0;
//            $package = request()?->header('Package') ?? '';
        }

}

这个判断 代码在队列里面执行会直接抛出异常。请问有没有别的代码能判断一下的?

247 1 0
1个回答

wo3948

重新安装包 排查了一下,删除 revolt/event-loop 后恢复正常,并不清楚哪里的问题 ,主要里面使用了 http-client 协程 涉及到这个扩展,所以请问下应该如何解决

  • 小Z先生 2025-01-23

    你应该使用Context来保存appid数据 然后把你的投递队列改一下 底层默认把appid投递进queue msg 然后自己继承queue的Consumer类 然后获取到data数据的时候 用Context::set一下appid的数据 记得在最后 Context::destroy();一下

  • 小Z先生 2025-01-23

    Webman\Context 类

  • tanhongbin 29天前

    request 正常只能在http进程中使用 你在队列 请问用户是谁?

  • tanhongbin 29天前

    request() 不在http进程中使用 这个函数 你得在进程启动的时候 初始化一下 \support\Context::init(); 你可以试一下

×
🔝