Zurück zur Übersicht
Sebastian Widmann

WordPress SQL Queries loggen

Datenbank-Performance im Blick: So protokollierst und analysierst du alle SQL-Abfragen in WordPress mit `SAVEQUERIES` und einem einfachen Logging-Snippet.

WordPress SQL Queries loggen

Um die von WordPress ausgeführten Datenbankabfragen zu protokollieren, kannst du SAVEQUERIES in deiner wp-config.php aktivieren. Diese Einstellung sorgt dafür, dass alle SQL-Queries aufgezeichnet werden. Füge dazu diesen Eintrag hinzu:

define( 'SAVEQUERIES', true );
Danach kannst du den folgenden Code in ein Plugin oder in die functions.php deines aktiven Themes einfügen, um die Queries in einer Log-Datei zu speichern:

add_action( 'shutdown', function () {
global $wpdb;

$log_stack = true;
$log_file = fopen( ABSPATH . '/wp-content/sql.log', 'a' );

fwrite($log_file, PHP_EOL . PHP_EOL . "############################################################" . PHP_EOL . PHP_EOL . date("F j, Y, g:i:s a") . PHP_EOL);

foreach ($wpdb->queries as $query) {
    fwrite($log_file, $query[0] . " - ($query[1] s)");
    if ($log_stack) {
        fwrite($log_file, PHP_EOL . "[Stack]: $query[2]" . PHP_EOL . PHP_EOL);
    } else {
        fwrite($log_file, PHP_EOL . PHP_EOL);
    }
}
fclose($log_file);

});
Dieser Code erstellt eine Datei namens wp-content/sql.log, in der alle WordPress SQL-Abfragen protokolliert werden.

WICHTIGER HINWEIS: Diese Log-Datei könnte öffentlich zugänglich sein. Sorge daher unbedingt dafür, dass sie ausreichend geschützt wird, beispielsweise durch entsprechende .htaccess-Regeln oder andere Sicherheitsmaßnahmen. So verhinderst du unautorisierten Zugriff auf sensible Informationen.