43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php
|
|
namespace Modules\Profiler\Middleware;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Modules\Profiler\Entities\HttpLog;
|
|
use Modules\Profiler\Entities\QueryLog;
|
|
|
|
class Profiler
|
|
{
|
|
public function handle(Request $request, $next)
|
|
{
|
|
\DB::enableQueryLog();
|
|
return $next($request);
|
|
}
|
|
|
|
public function terminate(Request $request, $response)
|
|
{
|
|
$this->logRequest($request);
|
|
$this->logQueries();
|
|
}
|
|
|
|
protected function logRequest(Request $request)
|
|
{
|
|
$url = $request->fullUrl();
|
|
$method = $request->getMethod();
|
|
$time = (microtime(true) - LARAVEL_START) * 1000;
|
|
|
|
HttpLog::create(['url' => $url, 'method' => $method, 'time' => $time]);
|
|
}
|
|
|
|
protected function logQueries()
|
|
{
|
|
$queries = \DB::getQueryLog();
|
|
|
|
foreach ($queries as $query) {
|
|
QueryLog::create([
|
|
'query' => $query['query'],
|
|
'bindings' => $query['bindings'],
|
|
'time' => $query['time']
|
|
]);
|
|
}
|
|
}
|
|
} |