Start · Sprachen · PHP · Referenz · closelog

closelog

Funktion

Schließt die geöffnete Verbindung zum System-Logger, die zuvor mit <code>openlog()</code> hergestellt wurde.

seit PHP 4.0.0 Kategorie: http

Signatur

closelog(): true

Beschreibung

closelog() beendet die Verbindung zum System-Logging-Dienst (Syslog), die durch einen vorangegangenen Aufruf von openlog() oder implizit durch syslog() geöffnet wurde. Nach dem Aufruf werden keine weiteren Log-Nachrichten mehr über den offenen Handle geschrieben.

In der Praxis ist der explizite Aufruf von closelog() häufig optional, da PHP die Verbindung am Ende des Skripts automatisch schließt. Es empfiehlt sich dennoch, die Verbindung nach der Nutzung explizit zu schließen, um Ressourcen freizugeben und den Code sauber zu halten – insbesondere in lang laufenden Prozessen oder Daemon-ähnlichen Skripten.

Die Funktion gehört zur Syslog-Familie, bestehend aus openlog(), syslog() und closelog(). Sie wird typischerweise am Ende eines Logging-Blocks eingesetzt, nachdem alle gewünschten Nachrichten mit syslog() geschrieben wurden.

Rückgabewert

Typ
true
Beschreibung
Gibt seit PHP 8.0 immer true zurück. In früheren Versionen wurde ein bool-Wert zurückgegeben, der jedoch stets true war.

Beispiele

Einfache Verwendung mit openlog und syslog

<?php
// Verbindung zum System-Logger öffnen
openlog('meine-anwendung', LOG_PID | LOG_PERROR, LOG_USER);

// Log-Nachrichten schreiben
syslog(LOG_INFO, 'Anwendung gestartet.');
syslog(LOG_WARNING, 'Speicherverbrauch über 80 %.');

// Verbindung zum System-Logger schließen
closelog();

echo 'Logging abgeschlossen.';
Logging abgeschlossen.

Logging in einem Try-Finally-Block

<?php
openlog('deploy-skript', LOG_PID, LOG_DAEMON);

try {
    syslog(LOG_INFO, 'Deployment gestartet.');
    // ... Deployment-Logik ...
    syslog(LOG_INFO, 'Deployment erfolgreich abgeschlossen.');
} catch (Throwable $e) {
    syslog(LOG_ERR, 'Deployment fehlgeschlagen: ' . $e->getMessage());
} finally {
    // Wird immer ausgeführt – auch im Fehlerfall
    closelog();
}

echo 'Skript beendet.';
Skript beendet.

// Wichtig · Fallstricke

In PHP 8.0 wurde der Rückgabetyp von bool auf true geändert, da die Funktion niemals false zurückgeben kann. Code, der den Rückgabewert prüft, sollte entsprechend angepasst werden.

Bei gewöhnlichen Webserver-Skripten, die nur kurz laufen, ist closelog() in der Regel nicht kritisch, da PHP-Ressourcen nach dem Request-Ende automatisch freigegeben werden. In CLI-Skripten oder dauerhaft laufenden Prozessen (z. B. mit pcntl_fork()) ist das explizite Schließen jedoch empfehlenswert.

Siehe auch