Estoy tratando de familiarizarme con la función flush() de PHP para un proyecto que estoy haciendo, escribí algunas secuencias de comandos y las cargué en algún espacio web que poseo; pero parecía que ninguno de ellos funcionó. Cogí la que está debajo de un comentario en PHP.net y probé:PHP flush() aparentemente funciona en mi máquina Linux pero no en mi máquina de Windows?
<?php
header('Content-type: text/html; charset=utf-8');
echo 'Begin ...<br />';
for($i = 0 ; $i < 10 ; $i++)
{
echo $i . '<br />';
flush();
sleep(1);
}
echo 'End ...<br />';
Al parecer el guión aún no estaba funcionando.
luego leí un comentario que dice:
Si llama ob_flush() y flush() y todavía no consigue el buffer tiró de la cadena puede ser debido a algún tipo de software antivirus (Panda en este caso) tiene el búfer hasta que la página haya terminado de cargarse antes de enviarla al navegador.
Así que decidí solicitar la página web en una máquina que tengo usando Linux (Ubuntu 12.04) ya que no tiene ningún software antivirus instalado; y funcionó perfectamente!
No tengo idea si esto tiene que ver con el software antivirus? O algún otro mecanismo extraño en Windows que impida que flush() logre su propósito previsto, estoy usando el mismo navegador en ambas máquinas (Firefox 14.0.1) así que dudo que pueda ser eso.
Así que supongo que mi verdadera pregunta es: ¿Alguien sabe algo sobre el software antivirus que impide que flush() logre su propósito (porque parece que no puedo encontrar nada al respecto en línea)? Y si es así, ¿hay alguna forma de evitarlo?
EDIT: para aclarar, estoy seguro de que esto NO es del lado del servidor, tengo un servidor web externo que ejecuta Linux, no estoy alojando estos scripts localmente en Linux o Windows Machine.
EDIT2: Probé esto en una casa de amigos en la computadora portátil Linux que logré que funcionara en mi casa, curiosamente el código de descarga tampoco funcionaba en su casa (en cambio, tardó años en cargarse y todos salieron a la vez) lo cual es extraño ya que funciona en esta computadora portátil en mi casa, no estoy seguro de si los enrutadores tienen algo que ver con la función flush() funcionando (realmente no puedo encontrar nada sobre esto en la web) porque eso es lo único que se me ocurre que podría interferir con eso.
De lo contrario, no he progresado tratando de solucionar esto por mi cuenta, definitivamente esto no tiene que ver con el servidor, lo cual es extraño ya que la mayoría de la información que parece estar hablando del servidor es el problema cuando la función flush() no funciona:/
Casualmente, también probé esto en una PC que ejecuta Norton (en lugar de AVG) en mi casa, funcionó pero no del 100%.
Sé que esto es definitivamente del lado del cliente y no del lado del servidor, la misma página funcionó perfectamente cuando se procesó en Firefox en Linux, pero no en Windows. Lo que me llevó a pensar que esto tampoco es un problema relacionado con el navegador. . . eso parece eliminar todas las explicaciones en esa cita:/ – Sean
@SeanDunwoody: ¿Cómo sabes que no es del lado del servidor? El servidor es un programa diferente en cada sistema operativo. Lo mismo vale para el navegador también. – Jon
No, lo siento, creo que malinterpreta, tengo un servidor que aloja este Linux en ejecución, no estoy alojando esto localmente en ninguna máquina – Sean