Foros del Web » Programando para Internet » PHP »

Progreso de un Bulce con %

Estas en el tema de Progreso de un Bulce con % en el foro de PHP en Foros del Web. Hola gente, tengo un problema con un bucle, la cosa es que estoy usando un for para unir paginas de unos examenes, la cosa es ...
  #1 (permalink)  
Antiguo 21/07/2010, 10:36
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 0
Progreso de un Bulce con %

Hola gente, tengo un problema con un bucle, la cosa es que estoy usando un for para unir paginas de unos examenes, la cosa es que son 7000 examenes, asi que tarda mas o menos 2hs en terminar el laburo, lo que necesito es mostrar el progreso del bucle con %.

tengo mas o menos una idea de como hacerlo pero se me complica ya que php no me borra lo que ya se escribio, me explico, si muestro la variable $porcentaje (esta guarda el calculo) me la muestra siempre, lo que quiero hacer es que me muestre un solo valor, osea primero 1% sespues 1,5%, etc..

espeor que me puedan ayudar.

Gracias!.
  #2 (permalink)  
Antiguo 21/07/2010, 10:42
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Progreso de un Bulce con %

solo con php no se puede... con un poco de dhtml quiza algo se podria hacer :P
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 21/07/2010, 10:45
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Progreso de un Bulce con %

que usaria de dhtml?
  #4 (permalink)  
Antiguo 21/07/2010, 10:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Progreso de un Bulce con %

Creo que algo así te puede ayudar. Solo que tendrías que pensar como hacer para que se escriba en un solo lado.
Código PHP:
Ver original
  1. <?php
  2. $count = 300;
  3. if (ob_get_level() == 0) ob_start();
  4. for($i=0; $i<$count; $i++)
  5. {
  6.     echo round(($i / $count) * 100, 0) . '<br />';
  7.     print str_pad('',4096)."\n";
  8.    
  9.     ob_flush();
  10.     flush();
  11.     usleep(30000);
  12. }
__________________
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 21/07/2010, 10:59
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Progreso de un Bulce con %

no me funciono, me muestra pero cuando termina el bucle, y me muestra todo osea 01234567891011.. etc.

necesito que se borre el numero anterior.
hay alguna otra forma de hacerlo?
  #6 (permalink)  
Antiguo 21/07/2010, 11:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Progreso de un Bulce con %

Trata el ejemplo para que veas que sí funciona. Solo que tendrías que pensar como hacer para que muestre en un mismo lugar el número. Tal vez usando AJAX puedas lograrlo.
__________________
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 21/07/2010, 11:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Progreso de un Bulce con %

para que el ejemplo te funcione debes tener en tu php.ini la opcion output_buffering = off
sino siempre te mostrara el buffer final :P
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 21/07/2010, 11:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Progreso de un Bulce con %

Esta raro, a mí me funciona con output_buffering = on. Por eso es que se coloca el if al principio para verificar el output_buffering.
__________________
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 21/07/2010, 14:46
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Progreso de un Bulce con %

Cita:
Iniciado por abimaelrc Ver Mensaje
Esta raro, a mí me funciona con output_buffering = on. Por eso es que se coloca el if al principio para verificar el output_buffering.
Pues a mi el código me funciona, cosa que ya había desistido porque en mi servidor local por más que tuviera esa variable en on o off no me iba.

Os acordáis de este post? se trataba lo mismo
http://www.forosdelweb.com/f18/mostr...-final-816188/

Sin embargo, nunca conseguí que funcionase este script en local

Código PHP:
Ver original
  1. <?php
  2. // All you need is 256 spaces first
  3. echo str_repeat(" ", 256)."<pre>"; flush();
  4.  
  5. // and ANY TAG before \r\n
  6. echo "working...<br/>\r\n"; flush(); sleep(5); // this in cycle
  7. echo "hola<br/>\r\n"; flush();sleep(5);
  8. echo "adios<br/>\r\n";
  9. ?>

Sin embargo, el que pone abimaelrc mas arriba sí!

Código PHP:
Ver original
  1. <?php
  2. $count = 300;
  3. if (ob_get_level() == 0) ob_start();
  4. for($i=0; $i<$count; $i++)
  5. {
  6.     echo round(($i / $count) * 100, 0) . '<br />';
  7.     print str_pad('',4096)."\n";
  8.    
  9.     ob_flush();
  10.     flush();
  11.     usleep(30000);
  12. }

No lo entiendo. Entonces no es cosa de mi servidor sino de cómo está hecho el script...

Intento hacer lo mismo poniendo en la primera linea
if (ob_get_level() == 0) ob_start();

Pero tampoco, no funciona, me muestra resultado cuando termina de ejecutarse! :S:S

Código PHP:
Ver original
  1. if (ob_get_level() == 0) ob_start();
  2. echo str_repeat(" ", 256)."<pre>"; ob_flush();flush();
  3.  
  4. // and ANY TAG before \r\n
  5. echo "working...<br/>\r\n"; ob_flush();flush(); usleep(5); // this in cycle
  6. echo "hola<br/>\r\n"; ob_flush();flush();usleep(50000000);
  7. echo "adios<br/>\r\n";

¿Es por el script, por qué uno funciona y el otro no?

Gracias de antemano!
  #10 (permalink)  
Antiguo 21/07/2010, 16:30
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Progreso de un Bulce con %

Bueno estube probando e intentando cosas, pero desistí hize una barra de proceso y a la bosta.
Gracias igualmente.

saludos
  #11 (permalink)  
Antiguo 21/07/2010, 19:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Progreso de un Bulce con %

@neodani lee este mensaje http://www.forosdelweb.com/f18/sleep...amente-825869/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 22/07/2010, 00:27
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Progreso de un Bulce con %

Cita:
Iniciado por abimaelrc Ver Mensaje
Probé el último ejemplo que pusiste
http://www.forosdelweb.com/f18/sleep...9/#post3485461

y nada, en mis navegadores, firefox 3.6.7 y IE 8 no me va mostrando los resultados paulativamente sino que me muestra el resultado cuando acaba el script.

Y eso que tiene también
print str_pad('',4096)."\n";

No hay manera! me muestra todo al acabar.

Código PHP:
Ver original
  1. if (ob_get_level() == 0) ob_start();
  2. echo str_repeat(" ", 4096)."<pre>";
  3. echo "working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>working...<br/>";
  4. print str_pad('',4096)."\n";
  5. ob_flush();flush(); sleep(5);
  6. echo str_repeat(" ", 4096)."<pre>";
  7. echo "hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>hola<br/>";
  8. print str_pad('',4096)."\n";
  9. print str_pad('',4096)."\n";
  10. echo "adios<br/>";

Etiquetas: progreso
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 22:04.