1

一部の MySQL データベースにアクセスする PHP スクリプトを実行しています。前のスクリプトがすべての情報をデータベースに入力するまで、数秒待つ必要があります。待機時間は長くはありませんが、サーバーがオフの日に遅い場合に備えて、スクリプトを実行する前に sleep(10) を使用して 10 秒間待機しています。その10秒待っている間に「お待ちください」というメッセージを表示したかったのですが、残念ながらそのメッセージは10秒が経過した後にしか表示されません。これは私が行っている方法です:

ob_start();
echo "Please wait while your invoice is being created... </br>";
ob_flush();
sleep(10);
ob_end_clean();
echo "Success...";

オンラインでのいくつかの調査に基づいて、ob_flush() は 10 秒が経過する前にテキストを出力し、ob_end_clean() は以前に印刷されたテキストを消去するという印象を受けましたが、代わりに得られたのは、両方のテキストが10秒が経過した後に表示され、最初のテキストは消去されていません。ここで私が間違っていることを知っていますか?

4

1 に答える 1

0

PHP で既に出力したものは編集できず、ページのリロードが必要になります。ob_flush はバッファを出力して空にします。ob_end_clean() は出力のバッファリングを停止し、正常に出力できるようにします。

表示されたテキストを非表示にするには、JavaScript を出力して以前にレンダリングされたテキストを非表示にします (選択しやすいように div などでラップすることが望ましい)。

于 2012-08-16T20:56:57.553 に答える