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
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!
el problema es que no muestra el echo hasta que no se ejecutan TODAS las sentencias!!
Pues no entiendo qué puede pasar, pon el código si eso para que le echemos un vistazo.
Hazlo con un arreglo y un foreach.
$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.
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.
}