Foros del Web » Programando para Internet » PHP »

Problemas con función sleep()

Estas en el tema de Problemas con función sleep() en el foro de PHP en Foros del Web. Experimento con el siguiente código: Código PHP: for( $i = 0 ; $i < 10 ; $i ++) {  echo  "<br>Han pasado $i segundos." ;   sleep ( ...
  #1 (permalink)  
Antiguo 15/01/2005, 08:31
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Problemas con función sleep()

Experimento con el siguiente código:

Código PHP:
for($i=0;$i<10;$i++)
{
 echo 
"<br>Han pasado $i segundos.";
 
sleep(1); //espera 1 segundo antes de salir del ciclo.

Pero no imprime una frase cada segundo, de hecho, no me aparece nada hasta que han pasado 10 segundos y salen todas las frases al mismo tiempo.

¿Alguna idea, compadres? Échenme una mano please. Mil Thanks !!
  #2 (permalink)  
Antiguo 15/01/2005, 13:27
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años, 1 mes
Puntos: 0
Si lo que quieres es que cada segundo aparezca un mensaje en pantalla creo que tendrás que recurrir a otros lenguajes de programación, que utilizan scripts dinamicos ejecutados desde el cliente y no desde el servidor. Este sería el caso de JavaScript, y lo que puedes hacer es que cada segundo se borre lo que hay en la pantalla y se escriva nuevamente un mensaje.

Trata de expner allí la duda a ver que te dicen.


Otra opción es hacerlo con PHP con ayuda de los headers para redireccionar a nuevas páginas, el inconveniente que se plantea es que quizás, dependiendo de la conexión, puede tardar mas de 1 segundo... si lo qe buscas es precisión te aconsejo algun script de JavaScript.


Suerte!
  #3 (permalink)  
Antiguo 15/01/2005, 15:14
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años, 1 mes
Puntos: 0
He encontrado algo que quizás te interese, es una cuenta atras, solo que se dispara una descarga de un archivo al final, lo he visto y me he acordado de tu consulta, quizás puedas extraer el código que te hace falta de esta web.

http://www.hintondesign.org/download....php?file_id=3

Suerte!
  #4 (permalink)  
Antiguo 15/01/2005, 20:37
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Acabo de ver la page, está muy padre ese contador, lo voy a usar para mandarles descargas a mis clientes.

En realidad quería ese desplegado para mostrar a los clientes el header de mi página un segundito al menos y luego el resto de la page.

O también para poner mensajes de: TU PEDIDO SE ESTÁ PROCESANDO... y como en 2 segundos mandarlo a una página diferente.

A la noche la voy a probar con headers como dices. No quería precisión, sólo sé que me será de utilidad en alguna ocasión y quería saber cómo se implemetanba.

Te agradezo muchísimo tus comentarios.
  #5 (permalink)  
Antiguo 17/01/2005, 07:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
PHP guarda toda su salida en el buffer de salida hasta que termina la ejecución de tu script .. momento en el cual es entregada al "cliente" ..

PHP a su vez dispone funciones para controlar este buffer .. así que podrías usar la función flush() para liberar el "buffer" cuando tu lo requieras entregando lo que tenga el buffer de salida en ese momento:
Código PHP:
for($i=0;$i<10;$i++) 

echo 
"<br>Han pasado $i segundos."
flush();
sleep(1); //espera 1 segundo antes de salir del ciclo. 

Pero .. tienes que tener presente que este ejemplo "funciona" .. pero no es apliable a por ejemplo una descarga de un archivo .. PHP no tiene opción de controlar el flujo de datos que envias al cliente (en "raw", por lo menos PHP 4) .. así que un "flush" de esas características para calcular exactamente la descarga (o upload) no sería posible desde PHP integramente ..


Un saludo,
  #6 (permalink)  
Antiguo 19/01/2005, 06:40
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
cool !

órale Amigo, Gracias, Era Exáctamente Lo Que Necesitaba !!
  #7 (permalink)  
Antiguo 19/01/2005, 09:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tampoco hace falta que lo grites ... xDD

Un saludo,
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 18:00.