Foros del Web » Programando para Internet » PHP »

sleep() No funciona correctamente!

Estas en el tema de sleep() No funciona correctamente! en el foro de PHP en Foros del Web. Estoy usando sleep() pero no funciona correctamente. Por Ej la uso así: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original for ( $i = 0 ; $i ...
  #1 (permalink)  
Antiguo 18/07/2010, 18:41
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
sleep() No funciona correctamente!

Estoy usando sleep() pero no funciona correctamente.
Por Ej la uso así:

Código PHP:
Ver original
  1. for($i=0;$i<10;$i++)  
  2. {  
  3. echo "<br>Han pasado $i segundos.";  
  4. flush();
  5. sleep(1); //espera 1 segundo antes de salir del ciclo.  
  6. }
Y el resultado solo lo muestra hasta que pasa los 10 segundos.


Lo uso

Código PHP:
Ver original
  1. echo "hola";
  2. sleep(10)
  3. echo "otro hola";

Y lo mismo, solo muestra todo hasta que pasan los 10 segundos.

Alguna idea?
__________________
@ivancamiloGo
  #2 (permalink)  
Antiguo 18/07/2010, 18:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: sleep() No funciona correctamente!

Porque no entiendes bien como funciona el output buffering. Te recomiendo que leas ese material para que puedas ver como hacer lo que quieres. sleep lo que hace es detener el código, no provoca que se muestre en pantalla la información.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/07/2010, 19:01
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
Respuesta: sleep() No funciona correctamente!

Siguiendo con ese ejemplo uso:
Código PHP:
Ver original
  1. <?php
  2.  
  3. for($i=0;$i<10;$i++)
  4. {
  5.     echo 'printing...<br />';
  6.     ob_flush();
  7.     flush();
  8.  
  9.     usleep(300000);
  10. }
  11.  
  12. ?>
pero solo lo arroja pasado los 10 segundos.
__________________
@ivancamiloGo
  #4 (permalink)  
Antiguo 18/07/2010, 19:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: sleep() No funciona correctamente!

Es que también tienes que saber que los navegadores, muestran la data después que acumula cierta cantidad de datos (cada uno tiene su propia cantidad) o cuando termina el código de ejecutarse. Tendrías que mostrar más bytes para que muestre el código. Siempre hay excepciones a la regla pero es para que tengas una idea de lo que puede estar pasando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 18/07/2010, 19:13
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
Respuesta: sleep() No funciona correctamente!

Valla problema.
estoy usando exec()
y lo que quiero es que cuando termine una ejecución salga un aviso de como va el proceso.
Por Ej:
Código PHP:
Ver original
  1. echo "vamos a empezar";
  2. sleep(5);
  3. exec ('el comando que sea');
  4. echo "vamos bien..";
  5. sleep(5);
  6. exec ('el otro comando que sea');

Pero bueno el sleep no me está sirviendo. Lo arroja todo al terminar el tiempo. Otra manera de hacerlo posible?
__________________
@ivancamiloGo
  #6 (permalink)  
Antiguo 18/07/2010, 19:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: sleep() No funciona correctamente!

Pero el ejemplo que tu tienes, hay uno en internet que es igual y mira lo que hicieron
Código PHP:
Ver original
  1. <?php
  2. if (ob_get_level() == 0) ob_start();
  3. for($i=0;$i<70;$i++)
  4. {
  5.     echo 'printing…<br />';
  6.     print str_pad('',4096)."\n";
  7.    
  8.     ob_flush();
  9.     flush();
  10.     usleep(30000);
  11. }

En ese caso para que funcione envía al navegador unos datos adicionales con el str_pad (mayormente es por Chrome) para que así muestre el código como tu deseas. Corre ese ejemplo para que te hagas de una idea. El código lo tomé de http://www.joeyrivera.com/2008/ob_st...ing-execution/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 18/07/2010, 19:38
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
Respuesta: sleep() No funciona correctamente!

Gracias por tu ayuda, ese me servira.
Pero ahora como podría integrarlo con el exec() si es posible.
Ej:
Código PHP:
Ver original
  1. echo "vamos a empezar";
  2. sleep(5);
  3. exec ('el comando que sea');
  4. echo "vamos bien..";
  5. sleep(5);
  6. exec ('el otro comando que sea');
ya que en el anterior trabaja por medio del for.
__________________
@ivancamiloGo
  #8 (permalink)  
Antiguo 18/07/2010, 19:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: sleep() No funciona correctamente!

Imprime después del exec el str_pad.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 18/07/2010, 20:24
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
Respuesta: sleep() No funciona correctamente!

No entiendo muy bien como hacerlo.
Código PHP:
Ver original
  1. <?php
  2. if (ob_get_level() == 0) ob_start();
  3.     exec "comando";
  4.     echo 'printing…<br />';
  5.     print str_pad('',4096)."\n";
  6.    
  7.     ob_flush();
  8.     flush();
  9.     usleep(30000);
?
Pero no me va. xD
__________________
@ivancamiloGo
  #10 (permalink)  
Antiguo 18/07/2010, 20:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: sleep() No funciona correctamente!

A mí si me funcionó. Ejemplo
Código PHP:
Ver original
  1. <?php
  2.  
  3. // start output buffer
  4. if (ob_get_level() == 0) ob_start();
  5. echo 'printing…<br />';
  6. print str_pad('',4096)."\n";
  7.  
  8. sleep(2);
  9. echo 'printing…<br />';
  10. print str_pad('',4096)."\n";
  11. sleep(2);
  12. echo 'printing…<br />';
  13. print str_pad('',4096)."\n";
  14. sleep(2);
  15. echo 'printing…<br />';
  16. print str_pad('',4096)."\n";
  17. sleep(2);
  18. echo 'printing…<br />';
  19. print str_pad('',4096)."\n";
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 18/07/2010, 20:46
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 11 meses
Puntos: 10
Respuesta: sleep() No funciona correctamente!

ash claro. Lo había probado pero sin el sleep(). Ahora lo probe con exec y todo perfecto. Gracias por tu ayuda.
__________________
@ivancamiloGo

Etiquetas: correctamente, sleep
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.