以下为我在中间件添加为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);