Joh*_*pit 7 php laravel laravel-5
我创建了一个可终止的中间件,可以向Google Analytics发送请求.我发送的一个属性是服务器响应时间.我是这样做的:
在\App\Http\Kernel我添加SendAnalytics中间件:
class Kernel extends HttpKernel {
...
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
...
'App\Http\Middleware\SendAnalytics',
];
}
Run Code Online (Sandbox Code Playgroud)
而SendAnalytics中间件是这样的:
class SendAnalytics implements TerminableMiddleware {
protected $startTime;
public function __construct() {
$this->startTime = microtime(true);
}
public function handle($request, Closure $next) {
return $next($request);
}
public function terminate($request, $response) {
$responseTime = microtime(true) - $this->startTime;
/* I send a request to Google here, using their Measurement Protocol */
// Dying for debugging purposes
dd($responseTime); // Always prints 0.0
}
}
Run Code Online (Sandbox Code Playgroud)
但这始终表明0.0.显示服务器响应时间的正确方法是什么?
Joh*_*pit 15
我用过microtime(true) - LARAVEL_START.似乎给出了相当准确的响应时间.
正如波格丹在评论中提到的那样:
LARAVEL_START定义的常量是bootstrap/autoload.php包含的第一个文件public/index.php,因此这使它成为第一个要执行的语句.如果将中间件放在列表的最后,它的terminate方法将是在app->terminate()调用之前执行的最后一个方法,因此您应该可以很好地计算执行时间.
| 归档时间: |
|
| 查看次数: |
7140 次 |
| 最近记录: |