Signatur
Beschreibung
gzclose() schließt eine zuvor mit gzopen() geöffnete komprimierte Datei und gibt alle zugehörigen Ressourcen frei. Die Funktion sorgt dafür, dass bei schreibend geöffneten Dateien alle gepufferten Daten noch vollständig in die Datei geschrieben und korrekt abgeschlossen werden, bevor der Dateizugriff beendet wird.
Das Schließen von Datei-Ressourcen nach der Verwendung ist wichtig, um Ressourcenlecks zu vermeiden. PHP schließt zwar alle offenen Dateihandles am Ende eines Skripts automatisch, jedoch ist explizites Schließen mit gzclose() als Best Practice empfohlen — insbesondere wenn viele Dateien in einer Schleife verarbeitet werden.
Die Funktion entspricht in ihrer Verwendung dem Standard-fclose(), ist aber speziell für mit gzopen() erzeugte gz-Ressourcen gedacht. Der Aufruf von fclose() auf einem gz-Handle ist nicht korrekt und kann zu unvollständigen oder korrupten Dateien führen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stream Pflicht | resource | Ein gültiger gz-Dateizeiger, der zuvor mit gzopen() geöffnet wurde. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein gültiger gz-Dateizeiger übergeben wurde).Beispiele
Komprimierte Datei schreiben und schließen
<?php
$gz = gzopen('/tmp/beispiel.gz', 'w9');
if ($gz === false) {
die('Datei konnte nicht geöffnet werden.');
}
gzwrite($gz, 'Hallo, das ist ein komprimierter Text!' . PHP_EOL);
gzwrite($gz, 'Zweite Zeile mit weiteren Daten.' . PHP_EOL);
if (gzclose($gz)) {
echo 'Datei erfolgreich geschrieben und geschlossen.';
} else {
echo 'Fehler beim Schließen der Datei.';
}
Komprimierte Datei lesen und schließen
<?php
$gz = gzopen('/tmp/beispiel.gz', 'r');
if ($gz === false) {
die('Datei konnte nicht geöffnet werden.');
}
while (!gzeof($gz)) {
echo gzgets($gz);
}
gzclose($gz);
echo PHP_EOL . 'Datei gelesen und Ressource freigegeben.';
// Wichtig · Fallstricke
Wichtig: Verwende stets gzclose() statt fclose() für mit gzopen() geöffnete Ressourcen. Das Mischen der Funktionen kann dazu führen, dass gz-Dateien unvollständig geschrieben werden und beim späteren Lesen als korrupt gelten.
In Schleifen, die viele gz-Dateien öffnen und schreiben, sollte gzclose() nach jeder Datei aufgerufen werden, um die maximale Anzahl offener Datei-Handles des Betriebssystems nicht zu überschreiten.