一個(gè)簡(jiǎn)單的saas 系統(tǒng),在 模型基類里面 boot 方法內(nèi) 判斷header 增加 全局查詢條件,
protected static function boot(){
$appId = 0;
$package = '';
if(empty(request())) {
dump('===reqeust===');
// $appId = request()?->header('App-Id') ?? 0;
// $package = request()?->header('Package') ?? '';
}
}
這個(gè)判斷 代碼在隊(duì)列里面執(zhí)行會(huì)直接拋出異常。請(qǐng)問(wèn)有沒(méi)有別的代碼能判斷一下的?
重新安裝包 排查了一下,刪除 revolt/event-loop 后恢復(fù)正常,并不清楚哪里的問(wèn)題 ,主要里面使用了 http-client 協(xié)程 涉及到這個(gè)擴(kuò)展,所以請(qǐng)問(wèn)下應(yīng)該如何解決
你應(yīng)該使用Context來(lái)保存appid數(shù)據(jù) 然后把你的投遞隊(duì)列改一下 底層默認(rèn)把a(bǔ)ppid投遞進(jìn)queue msg 然后自己繼承queue的Consumer類 然后獲取到data數(shù)據(jù)的時(shí)候 用Context::set一下appid的數(shù)據(jù) 記得在最后 Context::destroy();一下
request() 不在http進(jìn)程中使用 這個(gè)函數(shù) 你得在進(jìn)程啟動(dòng)的時(shí)候 初始化一下 \support\Context::init(); 你可以試一下