Tengo un objeto para tareas y en __deconstruct(), está destinado a ejecutar algunas de las tareas de limpieza más largas después de que el resto de la página ya se haya cargado. Desafortunadamente, almacena el resultado y no lo enviará hasta después de que las tareas hayan finalizado (no se imprime nada en las tareas).Deshabilitar el búfer de salida en PHP
He leído http://www.php.net/flush y he intentado todas las sugerencias allí. Obviamente, he intentado deshabilitar output_buffering en php.ini. He inhabilitado deflate_module, la compresión de zlib está desactivada, no tengo mod_gzip. Llamar a flush() o ob_flush() no tiene ningún efecto ni habilitar implicit_flush.
Estoy ejecutando XAMPP (actualmente apache 2.2.17, php 5.3.4) en Windows Server 2008 R2. PHP se está ejecutando como un módulo.
Y sí, podría configurar un poco de hack AJAX para ejecutar el administrador de tareas o incluso configurar una tarea programada para ejecutar esta tarea específica, pero el almacenamiento en búfer de salida también ha sido un problema en otros lugares. Me gustaría que se fuera a veces.
Desde un mismo hilo, alguien sugirió ver lo que haría lo siguiente:
<?php
while (TRUE)
{
echo 'x';
flush();
sleep(1);
}
?>
Como era de esperar, la página se muestra nada hasta el tiempo de ejecución máximo se alcanza, en cuyo punto se vacía el búfer.
Esto se ha vuelto extremadamente frustrante. ¿Alguien tiene alguna idea de lo que todavía podría estar causando que amortigüe?
¿Puedes confirmar que la salida todavía se está almacenando en el buffer vs. el navegador simplemente no muestra nada (por ejemplo, IE no mostrará nada hasta que reciba cierta cantidad de bytes)? –
hace esta función http://php.net/manual/en/function.ob-get-level.php return 0? – dqhendricks
puede intentar esto si ayuda http://in3.php.net/manual/en/function.ob-end-flush.php –