Signatur
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
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);
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";
// 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.