Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: OssoH en 14 Julio 2010, 13:11 pm



Título: forzar 'echo' php
Publicado por: OssoH en 14 Julio 2010, 13:11 pm
Hola, tengo una cadena de 20 sentencias SQL que se ejecutan una detras de otra. Me gustaría poner un echo 'ejecutación 1SQL finalizada' etc... tras cada SQL. El problema es que estos textos me lo pone una vez termina la ejecutación del PHP y me gustaría que me lo pusiera conforme va completando.

¿es posible esto en PHP?
Gracias


Título: Re: forzar 'echo' php
Publicado por: ‭lipman en 14 Julio 2010, 13:25 pm
Claro que sí... pero no entiendo muy bien cual es tu problema:

[consulta1]
echo1
[consulta2]
echo2
..
[consultaN]
echoN

Dejas el código así, y el resultado te saldrá:

echo1
echo2
..
echoN

Si lo haces así no tendrías que tener ese problema. Un saludo!


Título: Re: forzar 'echo' php
Publicado por: OssoH en 14 Julio 2010, 13:45 pm
el problema es que no muestra el echo hasta que no se ejecutan TODAS las sentencias!!


Título: Re: forzar 'echo' php
Publicado por: ‭lipman en 14 Julio 2010, 15:33 pm
Pues no entiendo qué puede pasar, pon el código si eso para que le echemos un vistazo.


Título: Re: forzar 'echo' php
Publicado por: MinusFour en 14 Julio 2010, 16:15 pm
Hazlo con un arreglo y un foreach.

Código
  1.  
  2. $arr = array(
  3. "sql" => "SQL1",
  4. "txt" => "Text SQL1"
  5. ),
  6. "sql" => "SQL2",
  7. "txt" => "Text SQL2"
  8. ),
  9. );
  10.  
  11. foreach($arr as $val){
  12. mysql_query($val["sql"]);
  13. echo $val["txt"];
  14. }
  15.  
  16.  
  17.  

Aunque ahora que lo pienso, esto solo es una manera más organizada :/ que lo que propone lipman. Si tú lo que quieres es que se ejecute una sentencia SQL y se muestre en el cliente progresivamente tienes que usar AJAX.

Creo que así funcionaría.


Título: Re: forzar 'echo' php
Publicado por: OssoH en 14 Julio 2010, 16:39 pm
Gracias por la pista, revisaré AJAX.
Encontre la solución!!


Código:
   1.
      ini_set('max_execution_time',9000); //tiempo limite de ejecucion de un escript en segundos.
   2.
      ini_set("memory_limit","1500M"); // aumentamos la memoria a 1,5GB
   3.
      ini_set("buffering ","0"); // desactivando el buffer a salida estandar
   4.
      ob_start();
   5.
       
   6.
      for(i=0;i<100000;i++){
   7.
      echo i;
   8.
       
   9.
      ob_flush();// forzar la salida o control de la salida del texto al navegador con buffers.
  10.
       
  11.
      flush();// opcion si no se usan buffers
  12.
       
  13.
      sleep(20);
  14.
      }