关于中间件的一些疑问

dgkerry

问题描述

以下为我在中间件添加为request添加一个属性userlog,当我用浏览器请求该接口时,如果我请求完一次再请求一次的方式,每次都不报错,但要是我并发请求多次,就会提示报错Error: Call to a member function info() on null in/www/wwwroot/【项目】/app/middleware/GolbalRequest.php:17

备注:开启了协程

##GolbalRequest
<?php
namespace app\middleware;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
use diyvendor\logger\Log;
class GolbalRequest implements MiddlewareInterface{
    public function process(Request $request, callable $handler) : Response
    {
        $request->request_id=generateRequestId();
        $request->userlog = Log::pirChannel('log2');
        //Log类为我自定义的日志类,继承(support\Log)
        //pirChannel意思为每次我都实例化新的log类
        $request->userlog->useLoggingLoopDetection(false);
        $request->userlog->info('请求开始');
        $response = $handler($request); // 继续向洋葱芯穿越,直至执行控制器得到响应
        $request->userlog->info('请求结束');

        return $response;
    }
}
?>

##控制器下的某个方法:
$rand_num=mt_rand(1,5);
sleep($rand_num);
95 0 0
0个回答

×
🔝