1

2ページあります。最初のページから 2 番目のページに ajax 呼び出しを送信して、その中で php コードを実行します。
実行には長い時間が必要です(1〜2分)。プログレスバーを作成して最初のページに進捗率を表示するにはどうすればよいですか。
進捗率を計算できますが、最初のページにリアルタイムで表示するにはどうすればよいですか。

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)
    ?>
4

2 に答える 2

3

flush() と ob_flush() はここでの友達です。これらを一緒に使用すると、出力をバッファに送信できます。

私が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

于 2013-11-11T13:27:11.333 に答える