Start · Sprachen · PHP · Referenz · bzflush

bzflush

Funktion

Erzwingt das Schreiben aller gepufferten Daten einer bzip2-Datei – tut in der aktuellen Implementierung aber nichts.

seit PHP 4.0.4 Kategorie: io

Signatur

bzflush(resource $bz): bool

Beschreibung

bzflush() ist eine Funktion der bzip2-Erweiterung und soll – analog zu fflush() – alle noch im internen Puffer befindlichen Daten einer geöffneten bzip2-komprimierten Datei auf das Speichermedium schreiben.

In der aktuellen PHP-Implementierung führt bzflush() jedoch keine Aktion aus und gibt lediglich true zurück. Die Funktion existiert aus Kompatibilitätsgründen und für etwaige zukünftige Implementierungen.

Ein echter Flush-Effekt wird erst durch bzclose() erzielt, das den bzip2-Stream ordnungsgemäß abschließt und alle verbleibenden Daten schreibt. Wer sicher sein will, dass Daten vollständig auf die Festplatte geschrieben wurden, sollte daher immer bzclose() verwenden.

Parameter

Name Typ Default Beschreibung
$bz Pflicht resource Ein gültiges bzip2-Dateiressourcen-Handle, das zuvor mit bzopen() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg und false bei einem Fehler zurück. Da die Funktion intern nichts tut, ist der Rückgabewert in der Praxis immer true, solange ein gültiges Handle übergeben wird.

Beispiele

Grundlegende Verwendung von bzflush

<?php
$bz = bzopen('/tmp/test.bz2', 'w');
if ($bz === false) {
    die('Datei konnte nicht geöffnet werden.');
}

bzwrite($bz, 'Hallo, das ist ein bzip2-komprimierter Text.');

// bzflush tut hier nichts – gibt aber true zurück
$result = bzflush($bz);
var_dump($result); // bool(true)

// Erst bzclose() schreibt die Daten tatsächlich
bzclose($bz);
bool(true)

bzflush im Vergleich zu bzclose

<?php
$bz = bzopen('/tmp/beispiel.bz2', 'w');
if ($bz === false) {
    die('Fehler beim Öffnen.');
}

for ($i = 1; $i <= 5; $i++) {
    bzwrite($bz, "Zeile $i\n");
    // bzflush hat keinen realen Effekt
    bzflush($bz);
}

// Daten werden erst hier wirklich geschrieben und der Stream geschlossen
bzclose($bz);

echo 'Datei wurde erfolgreich erstellt und geschlossen.';
Datei wurde erfolgreich erstellt und geschlossen.

// Wichtig · Fallstricke

Achtung: bzflush() hat in der aktuellen PHP-Implementierung keinen realen Effekt. Verlasst euch nicht auf diese Funktion, um Daten sicher auf die Festplatte zu schreiben. Verwendet stattdessen bzclose(), um den Stream ordnungsgemäß zu beenden und alle Puffer zu leeren.

Die Funktion ist in PHP seit Version 4.0.4 vorhanden, aber ihre Funktionalität wurde bisher nicht weiter ausgebaut. Sie bleibt möglicherweise als Platzhalter für zukünftige Implementierungen erhalten.