Files
2017-09-23 00:46:53 +02:00

64 lines
1.6 KiB
PHP

<?php
namespace Modules\Profiler\Middleware;
use Illuminate\Http\Request;
use Modules\Profiler\Entities\HttpLog;
use Modules\Profiler\Entities\QueryLog;
class Profiler
{
private $queries = [];
public function handle(Request $request, $next)
{
\DB::enableQueryLog();
return $next($request);
}
public function terminate(Request $request, $response)
{
$this->queries = \DB::getQueryLog();
$requestId = $this->logRequest($request);
$this->logQueries($requestId);
}
/**
*
*
* @param Request $request
*
* @return mixed
*/
protected function logRequest(Request $request)
{
$url = $request->fullUrl();
$method = $request->getMethod();
$time = (microtime(true) - LARAVEL_START) * 1000;
$data = ['url' => $url, 'method' => $method, 'time' => $time];
if (function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
$data['load_1'] = $load[0];
$data['load_5'] = $load[1];
$data['load_15'] = $load[2];
}
$http = HttpLog::create($data);
return $http->id;
}
protected function logQueries($httpLogId = null)
{
foreach ($this->queries as $query) {
QueryLog::create([
'query' => $query['query'],
'bindings' => $query['bindings'],
'time' => $query['time'],
'http_log_id' => $httpLogId
]);
}
}
}