Un modo migliore per fare ciò è utilizzare i primi due parametri accettati da ob_start
: output_callback
e chunk_size
. Il primo specifica un callback per gestire l'output in quanto è bufferizzato e quest'ultimo specifica la dimensione dei blocchi di output da gestire.
Ecco un esempio:
$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);
In questo esempio, il buffer di uscita viene lavata (inviato) per ogni 4096 byte di uscita (e ancora una volta alla fine dalla chiamata ob_end_flush
). Ogni volta che il buffer viene svuotato, verrà richiamata la callback e verrà passato l'ultimo blocco. Questo viene scritto in test.html. Il callback restituisce quindi false
, che significa "stampa questo blocco come è". Se si desidera scrivere solo l'output in un file e non nel flusso di output di PHP, è possibile restituire una stringa vuota.
fonte
2016-05-07 15:41:27
vuoi dire test.php (o il risultato di una valutazione della stessa) può essere enorme? –
Il risultato della valutazione potrebbe essere enorme. –