Datenbankabfragen und Leistungsüberwachung sind bei der Entwicklung von Webanwendungen sehr wichtig. Laravel bietet einen leistungsstarken Middleware -Mechanismus, der den Entwicklern helfen kann, diese Anforderungen zwischen Anforderungen und Antworten zu erfüllen. Middleware kann Logik ausführen, bevor die Anforderung den Controller erreicht oder nach der Rückkehr der Antwort an den Benutzer. In diesem Artikel wird vorgestellt, wie Datenbankabfrage -Protokollierung und Leistungsüberwachungsfunktionen über Laravel Middleware implementiert werden.
Zunächst müssen wir eine Middleware erstellen. Durch Ausführen des folgenden Befehls können wir eine Middleware namens QuerylogMiddleware erstellen:
php artisan make:middleware QueryLogMiddleware
Dieser Befehl generiert eine `querylogMiddleware.php` -Datei im Verzeichnis" app/http/Middleware ". Jetzt können wir Middleware Logic in diese Datei schreiben.
Um das Datenbank -Query -Protokoll aufzuzeichnen, können wir die DB -Fassade von Laravel in der "Handle" -Methode der Middleware verwenden, um alle SQL -Abfragen zu erhalten und sie in die Protokolldatei zu protokollieren. Hier ist ein Beispielcode:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\DB;
class QueryLogMiddleware
{
public function handle($request, Closure $next)
{
// Aktivieren Sie das Abfrageprotokoll
DB::connection()->enableQueryLog();
$response = $next($request);
// Holen Sie sich Query -Protokoll
$queries = DB::getQueryLog();
foreach ($queries as $query) {
// Wille$querySchreiben Sie in Protokolldateien
}
return $response;
}
}
Im obigen Code `db :: Connection ()-> enableQuerylog ()` Ermöglicht die Abfrageprotokollierung. Indem wir die Methode db :: getQueryLog () aufrufen, erhalten wir alle Abfrageboten und können jede Abfrage darin durchqueren und aufzeichnen.
Zusätzlich zum Aufzeichnungsdatenbank -Abfrageprotokoll können wir auch Middleware verwenden, um Leistungsüberwachungsfunktionen zu implementieren. Zum Beispiel können wir Laravels Debugbar -Erweiterung verwenden, um die Reaktionszeit der Anwendung zu überwachen. Hier ist ein Beispielcode:
<?php
namespace App\Http\Middleware;
use Closure;
use Barryvdh\Debugbar\Facade as Debugbar;
class PerformanceMiddleware
{
public function handle($request, Closure $next)
{
$start = microtime(true);
$response = $next($request);
$end = microtime(true);
$executionTime = $end - $start;
// Fügen Sie Leistungsüberwachungsdaten hinzu
Debugbar::addMeasure('Execution Time', $start, $end);
return $response;
}
}
Im obigen Code verwenden wir die Fassade von Debugbar, um eine Leistungsmetrik mit dem Namen "Ausführungszeit" hinzuzufügen und die Ausführungszeit der Anfrage zu berechnen. Sie können auch andere Leistungsüberwachungsmetriken hinzufügen, z. B. die Anzahl der Datenbankabfragen, Speicherverbrauch usw.
Als nächstes müssen wir diese Middleware in der Anwendung registrieren. Öffnen Sie die Datei "App/HTTP/Kernel.php" und fügen Sie den folgenden Code zur Eigenschaft "$ MiddlewareGroups" hinzu:
protected $middlewareGroups = [
'web' => [
// Andere Middleware...
\App\Http\Middleware\QueryLogMiddleware::class,
\App\Http\Middleware\PerformanceMiddleware::class,
],
];
Dies fügt der Web Middleware -Gruppe QuerylogMiddleware und Performancemiddleware hinzu, dh sie werden während jeder Webanforderung ausgeführt.
Jetzt können wir diese Middleware in jeder Routing- oder Controller -Methode der Anwendung verwenden. In der Datei "Routes/Web.php" können wir beispielsweise Folgendes verwenden:
Route::middleware(['query.log', 'performance'])->group(function () {
// Routing -Definition...
});
In diesem Beispiel wird angezeigt, wie Middleware auf Routing -Gruppen angewendet wird. Sie können sie auch auf eine einzelne Route oder eine Controller -Methode anwenden.
Durch die Verwendung von Laravels Middleware können wir unseren Anwendungen problemlos Datenbankabfrage- und Leistungsüberwachungsfunktionen hinzufügen. Wir haben ein "queryLogmiddleware" erstellt, um das Datenbank -Abfrageprotokoll aufzuzeichnen und die Leistung der Anwendung über "Performancemiddleware" zu überwachen. Diese Middlewares sind sehr einfach zu registrieren und zu verwenden, verbessern jedoch die Überwachung und Wartbarkeit der Anwendung erheblich.