Una mejor forma de hacerlo es utilizar los primeros dos parámetros aceptados por ob_start
: output_callback
y chunk_size
. El primero especifica una devolución de llamada para manejar la salida, ya que está almacenada en búfer, y la última especifica el tamaño de los fragmentos de salida que se deben manejar.
Aquí está un ejemplo:
$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);
En este ejemplo, se vaciará el búfer de salida (enviado) por cada 4096 bytes de salida (y una vez más al final de la llamada ob_end_flush
). Cada vez que se vacía el búfer, se llamará a la devolución de llamada $write_ob_to_file
y se pasará el último fragmento. Esto se escribe en test.html. La devolución de llamada luego devuelve false
, lo que significa "generar este fragmento como está". Si solo desea escribir el resultado en un archivo y no en la secuencia de salida de PHP, puede devolver una cadena vacía en su lugar.
quieres decir que test.php (o el resultado de la evaluación del mismo) puede ser enorme? –
El resultado de evaluarlo podría ser enorme. –