Start · Sprachen · PHP · Referenz · gzputs

gzputs

Funktion

Alias von <code>gzwrite()</code> — schreibt einen String in eine geöffnete, komprimierte gzip-Datei.

seit PHP 4.0.0 Kategorie: io

Signatur

gzputs(resource $handle, string $string, int $length = ?): int|false

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

Typ
int|false
Beschreibung
Gibt die Anzahl der (unkomprimierten) geschriebenen Bytes zurück, oder 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);
Geschriebene Bytes (unkomprimiert): 40

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);
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

// 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.