INIT: initial commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?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
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user