forzar 'echo' php

Iniciado por OssoH, 14 Julio 2010, 13:11 PM

0 Miembros y 1 Visitante están viendo este tema.

OssoH

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

‭lipman

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!

OssoH

el problema es que no muestra el echo hasta que no se ejecutan TODAS las sentencias!!

‭lipman

Pues no entiendo qué puede pasar, pon el código si eso para que le echemos un vistazo.

MinusFour

#4
Hazlo con un arreglo y un foreach.

Código (php) [Seleccionar]


$arr = array(
array(
"sql" => "SQL1",
"txt" => "Text SQL1"
),
array(
"sql" => "SQL2",
"txt" => "Text SQL2"
),
);

foreach($arr as $val){
mysql_query($val["sql"]);
echo $val["txt"];
}




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.

OssoH

#5
Gracias por la pista, revisaré AJAX.
Encontre la solución!!



   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.
      }