0

アップロードユーザーが次のページにリダイレクトされた後、ユーザーがファイルをアップロードするアップロードスクリプトを作成し、そのファイルをデータベースにダンプしてgif画像を表示し、遅延を作成してその画像loading data..を. 私が直面している問題は、アップロード後にコードが実行時間としてかかり、そのファイルに渡された遅延の数に関係なく、次のページに最終出力が表示され、それらすべての遅延が実行時間に加算され、ユーザーの最終出力が表示されることです。ダンプが行われた後。なぜこれが起こっているのか教えてください。sleep(10)showing datasleep(10)

フラッシュ()を使用したことに注意してください。どちらも機能せず、構成ファイルで有効になっています

<?php 
flush();
ob_flush();
echo '<script language="javascript">document.getElementById("information").innerHTML="<img src='."images/L.gif".' />"</script>';
sleep(30);
echo '<script language="javascript">document.getElementById("information").innerHTML="<img src='."images/C.gif".' />"</script>';
 ?>
4

2 に答える 2

2

出力をフラッシュしていて、文字列をバッファに追加してからスリープし、別の文字列をバッファに追加してから再度フラッシュします。スリープ前の最初のエコー後に
使用します。ob_flush()

ob_start();
echo '<script language="javascript">document.getElementById("information").innerHTML="<img src='."images/L.gif".' />"</script>';
ob_flush();
sleep(30);
echo '<script language="javascript">document.getElementById("information").innerHTML="<img src='."images/C.gif".' />"</script>';

オフoutput_bufferingもできます。

また、ページの無限ロードを使用する代わりに、固定遅延チェックで AJAX を使用します。

于 2012-12-09T17:23:28.363 に答える
1

これには解決策があります(つまり、ステートメントのflush後とechoステートメントの前にsleep)。しかし、これはとにかくクロスブラウザーで必要なことを行う可能性は低いです。この種のタスクには、AJAX の方がはるかに優れたソリューションです (ほとんどの場合)。

ブラウザーと構成によっては、サーバーへの接続が閉じられるまで、ブラウザーは何もレンダリングを開始しない場合があります。この場合、すべての遅延が経過するまで、ユーザーの画面には何も表示されません。

于 2012-12-09T17:27:44.960 に答える