Signatur
Beschreibung
gzputs() ist ein direkter Alias der Funktion gzwrite() und verhält sich in jeder Hinsicht identisch zu ihr. Die Funktion schreibt den angegebenen String in eine zuvor mit gzopen() geöffnete gzip-komprimierte Datei.
Die komprimierten Daten werden dabei transparent verwaltet: PHP übernimmt die Komprimierung im Hintergrund, sodass der Aufrufer einfachen, unkomprimierten Text übergeben kann. Die tatsächlich in die Datei geschriebenen Bytes sind komprimiert, was zu deutlich kleineren Dateien führen kann.
Der optionale Parameter length begrenzt die Anzahl der zu schreibenden Bytes. Wird er weggelassen, wird der gesamte String geschrieben. Soll nur ein Teil eines längeren Strings in die Datei geschrieben werden, ist dieser Parameter praktisch.
Da es sich um einen Alias handelt, empfehlen manche Coding-Standards die Verwendung von gzwrite() direkt, um Verwechslungen mit der ursprünglich aus C stammenden Funktion fputs()/puts() zu vermeiden. Funktional sind beide jedoch gleichwertig.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $handle Pflicht | resource | Ein gültiger gzip-Datei-Handle, der zuvor mit gzopen() geöffnet wurde und im Schreibmodus ('w', 'wb' o.Ä.) betrieben wird. |
|
| $string Pflicht | string | Der zu schreibende String. Die Daten werden vor dem Schreiben automatisch komprimiert. | |
| $length | int | Optionale maximale Anzahl an Bytes, die aus string geschrieben werden sollen. Wird der Parameter weggelassen, wird der komplette String geschrieben. |
Rückgabewert
false im Fehlerfall.Beispiele
Einfaches Schreiben in eine gzip-Datei mit gzputs
<?php
$handle = gzopen('/tmp/beispiel.gz', 'wb');
if ($handle === false) {
die('Datei konnte nicht geöffnet werden.');
}
$text = "Hallo, das ist eine komprimierte Zeile.\n";
$bytesGeschrieben = gzputs($handle, $text);
echo "Geschriebene Bytes (unkomprimiert): " . $bytesGeschrieben . PHP_EOL;
gzclose($handle);
Mehrere Zeilen in eine gzip-Datei schreiben und anschließend auslesen
<?php
$datei = '/tmp/log_komprimiert.gz';
// Schreiben
$handle = gzopen($datei, 'wb9'); // Kompressionslevel 9
if ($handle === false) {
die('Fehler beim Öffnen.');
}
$zeilen = [
"2024-01-01 10:00:00 INFO Anwendung gestartet",
"2024-01-01 10:00:05 DEBUG Datenbankverbindung hergestellt",
"2024-01-01 10:00:10 WARNING Speicher fast voll",
];
foreach ($zeilen as $zeile) {
gzputs($handle, $zeile . "\n");
}
gzclose($handle);
// Lesen und Ausgabe
$lesen = gzopen($datei, 'rb');
while (!gzeof($lesen)) {
echo gzgets($lesen);
}
gzclose($lesen);
// Wichtig · Fallstricke
Alias: gzputs() ist ein reiner Alias für gzwrite(). Es gibt keine funktionalen Unterschiede. Für bessere Lesbarkeit und Konsistenz wird in modernem Code oft direkt gzwrite() bevorzugt.
Dateimodus beachten: Die Datei muss mit einem schreibenden Modus ('w', 'a' etc.) über gzopen() geöffnet worden sein. Ein Schreiben in eine im Lesemodus geöffnete Datei führt zu einem Fehler.
Rückgabewert: Der zurückgegebene Integer entspricht der Länge des unkomprimierten Eingabe-Strings, nicht der tatsächlich auf der Festplatte gespeicherten komprimierten Datenmenge.