flush

funkcja

Wymusza natychmiastowe wysłanie buforowanych danych wyjścia z PHP do serwera WWW lub systemu operacyjnego.

flush(): void

flush próbuje wypchnąć dane z wewnętrznego bufora PHP do warstwy niżej — serwera WWW (np. Apache, nginx) lub systemu operacyjnego. Nie gwarantuje, że dane dotrą do przeglądarki: serwer WWW i sam TCP mogą utrzymywać własne bufory.

flush nie dotyczy bufora ob_start(). Jeśli używasz buforowania wyjścia, musisz najpierw wywołać ob_flush() (lub ob_end_flush()), a dopiero potem flush().

Typowe zastosowanie — postęp długiej operacji wysyłany na bieżąco:

<?php
// Wyłącz buforowanie ob (jeśli jest aktywne)
while (ob_get_level() > 0) {
    ob_end_flush();
}

for ($i = 1; $i <= 5; $i++) {
    echo "Krok $i z 5...\n";
    flush();        // wypchnij do serwera
    sleep(1);       // symulacja pracy
}
echo "Gotowe.\n";

Uwaga praktyczna: wiele nowoczesnych konfiguracji (nginx z proxy_buffering on, FastCGI, gzip) i tak buforuje odpowiedź po stronie serwera, przez co efekt flush jest niewidoczny dla użytkownika. Jeśli zależy ci na strumieniowaniu, zweryfikuj konfigurację serwera lub użyj Server-Sent Events albo WebSocket.