Start · Sprachen · PHP · Referenz · set_file_buffer

set_file_buffer

Funktion

Setzt die Schreibpuffergröße eines geöffneten Datei-Streams (Alias von <code>stream_set_write_buffer</code>).

seit PHP 4.0.0 Kategorie: io

Signatur

set_file_buffer(resource $stream, int $size): int

Beschreibung

set_file_buffer ist ein Alias der Funktion stream_set_write_buffer und legt die Größe des internen Schreibpuffers für einen geöffneten Stream fest. Standardmäßig puffert PHP Schreiboperationen; mit dieser Funktion lässt sich dieses Verhalten anpassen.

Wird $size auf 0 gesetzt, wird der Puffer deaktiviert und jede Schreiboperation wird sofort auf den Stream übertragen (ungepuffertes Schreiben). Das ist besonders nützlich, wenn Daten in Echtzeit geschrieben werden sollen, z. B. bei Logdateien, Netzwerkstreams oder wenn sichergestellt werden muss, dass Daten sofort physisch auf dem Medium landen.

Ein größerer Pufferwert kann die Schreibleistung verbessern, da weniger Systemaufrufe nötig sind. Der Kompromiss besteht darin, dass Daten erst dann tatsächlich geschrieben werden, wenn der Puffer voll ist oder der Stream explizit geleert wird.

Da es sich um einen Alias handelt, wird empfohlen, direkt stream_set_write_buffer zu verwenden, da Aliase in zukünftigen PHP-Versionen entfernt werden könnten.

Parameter

Name Typ Default Beschreibung
$stream Pflicht resource Ein geöffnetes Stream-Resource-Handle, z. B. von fopen().
$size Pflicht int Puffergröße in Bytes. Bei 0 wird ungepuffertes Schreiben aktiviert.

Rückgabewert

Typ
int
Beschreibung
Gibt 0 zurück, wenn die Puffergröße erfolgreich gesetzt wurde. Bei einem Fehler wird ein anderer Wert zurückgegeben.

Beispiele

Ungepuffertes Schreiben in eine Logdatei aktivieren

<?php
$handle = fopen('app.log', 'a');
if ($handle === false) {
    die('Datei konnte nicht geöffnet werden.');
}

// Puffer deaktivieren: Jedes fwrite() schreibt sofort
$result = set_file_buffer($handle, 0);

if ($result === 0) {
    echo "Puffer erfolgreich deaktiviert.\n";
} else {
    echo "Fehler beim Setzen des Puffers.\n";
}

fwrite($handle, date('Y-m-d H:i:s') . " - Anwendung gestartet\n");
fclose($handle);
Puffer erfolgreich deaktiviert.

Schreibpuffer auf 4 KB setzen für optimierte Schreibleistung

<?php
$handle = fopen('daten.csv', 'w');
if ($handle === false) {
    die('Datei konnte nicht geöffnet werden.');
}

// Puffergröße auf 4096 Bytes (4 KB) setzen
set_file_buffer($handle, 4096);

for ($i = 1; $i <= 1000; $i++) {
    fwrite($handle, "Zeile $i;Wert $i\n");
}

fclose($handle);
echo "CSV-Datei mit 1000 Zeilen geschrieben.\n";
CSV-Datei mit 1000 Zeilen geschrieben.

// Wichtig · Fallstricke

Alias: set_file_buffer ist ein Alias von stream_set_write_buffer. Die Verwendung des Originals wird bevorzugt, da Aliase in zukünftigen PHP-Versionen ohne Vorwarnung entfernt werden können.

Hinweis zur Plattformunterstützung: Nicht alle Stream-Wrapper unterstützen das Setzen des Schreibpuffers. Bei Netzwerkstreams oder benutzerdefinierten Wrappern kann die Funktion einen Wert ungleich 0 zurückgeben, ohne dass ein Fehler ausgelöst wird.

Flush: Selbst bei aktiviertem Puffer lässt sich mit fflush() der Pufferinhalt manuell auf das Zielmedium schreiben, ohne den Stream zu schließen.