Lepszym sposobem na to jest użycie dwóch pierwszych parametrów zaakceptowanych przez ob_start
: output_callback
i chunk_size
. Pierwsza określa wywołanie zwrotne, aby obsłużyć dane wyjściowe jako buforowane, a drugie określa rozmiar porcji danych wyjściowych do obsługi.
Oto przykład:
$output_file = fopen('test.html', 'w');
if ($output_file === false) {
// Handle error
}
$write_ob_to_file = function($buffer) use ($output_file) {
fwrite($output_file, $buffer);
// Output string as-is
return false;
};
ob_start($write_ob_to_file, 4096);
include 'test.php';
ob_end_flush();
fclose($output_file);
W tym przykładzie, bufor zostanie oczyszczony (wysłane) na każde 4096 bajtów wyjścia (i raz na końcu przez wywołanie ob_end_flush
). Za każdym razem, gdy bufor zostanie przepłukany, wywołanie zwrotne $write_ob_to_file
zostanie wywołane i przekazane jako ostatni fragment. Zostanie to zapisane w pliku test.html. Callback następnie zwraca false
, co oznacza "wypisz ten fragment jak jest". Jeśli chcesz zapisać wynik tylko do pliku, a nie do strumienia wyjściowego PHP, możesz zamiast tego zwrócić pusty ciąg.
masz na myśli test.php (lub wynik jej oceny) może być ogromny? –
Wynik oceny może być ogromny. –