Signatur
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
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 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.';
// 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.