Hemos estado utilizando php flush para "poner en blanco" una página inmediatamente tan pronto como se hace clic, y también para enviar la navegación y los componentes principales de la página para que la página aparezca casi al instante , aunque a veces el contenido puede tardar mucho tiempo en cargarse.PHP flush detuvo el lavado en IIS7.5
Esto ha funcionado muy bien.
Recientemente hemos actualizado de IIS 7.0 a 7.5 y ahora el enjuague no funciona. Al investigar el problema, hemos desactivado la compresión de archivos estáticos y dinámicos. También hemos desactivado el almacenamiento en caché de resultados.
También tenemos la compresión zlib desactivada y el buffer de salida desactivado en php.ini.
Con el fin de probar el problema que tenemos el siguiente script
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
ob_start();
echo "starting...<br/>\n";
for($i = 0; $i < 5; $i++) {
print "$i<br/>\n";
ob_end_flush();
ob_flush();
flush();
ob_start();
sleep(2);
}
print "DONE!<br/>\n";
El browser muestra el estado de carga (sea lo que sea en cualquier navegador, en el IE se ve como un gif animado Ajax, en Firefox la la pestaña dirá "Conectando ...") durante 10 segundos, y de repente aparecerá todo el resultado.
Hemos probado varias combinaciones de color y ob_flush y ob_end_flush basadas en preguntas similares en este sitio. Ninguno de ellos funciona. ¿Hay alguna forma de hacer que IIS/PHP limpie los datos?
Esto funcionó. Desmontarlo pieza por pieza para ver cuál es la clave ... –
@Jeff, la demostración debería ayudar un poco :-) – Neal
Parece que la clave es el tipo de contenido: text/html; charset = utf-8. Agregar esto como un encabezado también funciona. En particular, parece que el juego de caracteres = utf-8 es lo que lo hace funcionar. –