Comunidad de diseño web y desarrollo en internet online

Ejecucion de scripts en.. tiempo real.. ¿o algo asi?

Citar            
MensajeEscrito el 15 Jul 2007 07:03 pm
no logro solucionarlo , ni se como buscar al respecto, por mas que pruebo cosas en google no doy con nada. El punto es que quisiera saber porque a veces un script, especificamente en php no imprime nada hasta que no termina de ejecutarse y otras veces va imprimiendo todo conforme se va ejecutando.

este es mi codigo:

Código :

$progressBar->fillBar(5);
sleep(2);
$progressBar->fillBar(10);
sleep(2);
$progressBar->fillBar(15);
sleep(2);
$progressBar->fillBar(35);
sleep(2);


ahora claro, en realidad lo que quiero no es un sleep, pongo el sleep para emular algun proceso de php que deberia tomar algo de tiempo... lo que quiero es que el script se vaya imprimiendo conforme pasa el tiempo.. pero si pongo esto..

Código :

<?php
echo ("1-");
sleep(2);
echo ("2-");
sleep(2);
echo ("3-");
sleep(2);
echo ("4-");
sleep(2);
echo ("5");
?>


y lo veo en mi navegador, pasan 8 segundos y me imprime todo de golpe. En cambio si lo subo a mi servidor y lo ejecuto desde consola

#php test.php

me va imprimiendo todo con dos segundos de intervalo entre cada impresion...

quisiera saber porque pasa eso...

alguna idea?

configuracion?

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Jul 2007 08:21 pm
Configuración del php.ini, por defecto:

Código :

implicit_flush = Off

Colocalo en On y listo

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 15 Jul 2007 08:32 pm
gracias, para los interesados mas al respecto:

http://es.php.net/manual/es/ref.outcontrol.php

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:06 pm
sigue fallando, coloque el implicit_flush en on... y probe de varias formas...

Código :

ob_implicit_flush();
echo "lo que pasa es que";
flush();
echo "5";
flush();
sleep(2);
echo "10";
flush();
sleep(2);


me imprime todo hasta despues de todos los sleep... alguna idea...

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:07 pm
¿reiniciaste el servidor?

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:13 pm
me funciono colocando al inicio del script ob_end_flush();

expulsa el buffer y lo desactiva... porque el implicit_flush no me va? voy a leer un poco y a responderme a mi mismo

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:14 pm
Seguro te interesará leer esto:
http://es.php.net/manual/es/function.ob-implicit-flush.php#33778

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:15 pm
De cualquier forma, no se que quieres hacer, pero no te recomiendo cambiar el implicit_flush a ON, para un proyecto, medianamente serio. Consume muchos recursos de forma inecesaria. Eso solo te será útil para pruebas, debug y eso, nada más.

saludos :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 15 Jul 2007 09:21 pm
reinicie el servidor? si claro.

buffer de navegador? libreria gzip en apache? que otra cosa puede ser?

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Jul 2007 09:26 pm
lo se, explico:

Es una barra de progreso que estoy desarrollando. Funciona de dos maneras, uno creando una conexion asincronica cada 2 segundos y respondiendo con el nuevo estado de la barra de progreso (funciona perfecto) y dos a medida que se va procesando un script. Entiendo que no es conveniente activar el implicit_flush, sin embargo lo active para probar y no sirvio, uso ZendCore, tendra que ver? (que no creo). Al final como me sirvio el ob_end_flush lo puse en la clase de la sigueinte manera...

Código :

class io_Html_Form_ProgressBar extends io {

   function __construct($statusFile = ''){
      ob_end_flush();
      $this->statusFile = $statusFile;
   }


asi que solo se activara cuando sea un script que modifica la barra de progreso.

aqui hay un borrador...

http://pbxa.com:8080/ioFramework/wiki/progressBar

http://pbxa.com:8080/ioFramework/wiki/progressBar

Por neohunter

Claber

563 de clabLevel

1 tutorial

 

Bogota, Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.