Tengo dos páginas. Envío una llamada ajax desde la primera página a la segunda página para ejecutar códigos PHP dentro de ella.
la ejecución necesita mucho tiempo (1-2 min) .cómo puedo crear una barra de progreso y mostrar el porcentaje de progreso en la primera página.
Puedo calcular el porcentaje de progreso, pero cómo mostrarlo en tiempo real en la primera página.
firstpage.php
$.ajax({ url: "secondpage.php",
data: {"q": data},
type: "post",
success: function(output) {
//some code
}
secondpage.php
<?php
// I have some codes here that can calculate progress percent
// but how to show real time progress percent in firstpage.php
echo $result; //final result(for ajax callback)
?>
Respuestas
0 para la respuesta № 1Yo uso jquery ui barra de progreso. http://jqueryui.com/progressbar/
Y usaría llamadas ajax para obtener el porcentajecompletado y use el valor completado para actualizar la barra de progreso mientras se encuentra en la misma página. Tal vez podría llamar al progreso cada 10 segundos aproximadamente, obtener una actualización y actualizar la barra de progreso en consecuencia.
1 para la respuesta № 2
flush () y ob_flush () es tu amigo aquí. El uso de estos juntos puede enviar la salida al búfer.
Prueba este ejemplo que tomé de php.net
header( "Content-type: text/html; charset=utf-8" );
echo "Begin ...<br />";
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . "<br />";
flush();
ob_flush();
sleep(1);
}
echo "End ...<br />";
http://php.net/manual/en/function.ob-flush.php