緊急要望:PHPがクライアントにリアルタイムにデータを出力する問題について
テストコードは以下の通りです。
ob_start();
for($i = 1; $i <= 100 ; $i ){
$sourceName = 'filetoupload' . $i;
$imageArray = array();
$message = "画像 $i がサーバーにアップロードされました";
echo $message;
flash();
ob_flush();
usleep(500000);
}
ob_end_flush();
?>
テスト結果は次のとおりです。
ローカル サーバーではスクリプトの実行と出力を同時に行うことができますが、イントラネット サーバーで実行すると、100 サイクルの実行後に出力されます。
希望する正しい結果:
ローカルと同様 サーバー上の実行結果は同じで、実行中に出力が表示されます。同じスクリプトをイントラネット サーバーで実行すると異なる結果が生じるのはなぜですか? それは php.ini の構成項目に関連しているのでしょうか? ? ? どの設定項目が関連していますか? ? ?助けていただければ幸いです、よろしくお願いします
-----解決策------ ------------
本当にお急ぎの場合は!方法を思いつきました!ページに値を渡すだけで、ループは使用しないでください。
$id=empty($_GET['id'])?1:intval($_GET['id']); $sourceName = 'filetoupload' . $i; $imageArray = 配列(); $message = "画像 $i がサーバーにアップロードされました"; $メッセージをエコー; if ($id>=100){ 出口(); } $id; $msg.="<META HTTP-EQUIV=更新 CONTENT=0;URL=?id=".$id.">"; $msg をエコー; 出口(); <br><font color="#e78608">------解決策---------</font><br>この問題について、私は長い間開いていましたLinux は、それがキャッシュの問題であることを最終的に発見しました <br>
<?php ob_start(); for($i = 1; $i <= 100; $i ){ ob_end_flush();//キャッシュを閉じる $sourceName = 'filetoupload' . $i; $imageArray = 配列(); $message = "画像 $i がサーバーにアップロードされました"; $メッセージをエコー; フラッシュ(); ob_flush(); usleep(500000); } ob_end_flush(); ?> <br /><font color='#e78608'>------解決策---------</font><br /><fieldset><legend>話し合う</legend> <br />引用:<br />この問題のために、長い間使用していなかった Linux を起動し、最終的にキャッシュの問題であることがわかりました<br /><br />PHP コード<br /><br /> <?php<br />ob_start(); <br />for($i = 1; $i <= 100; $i ){<br />ob_end_flush();//キャッシュをオフにする<br />$sourceName = 'filetoupload' . $i;<br />$imageArray = arr……<br /></fieldset> <br /><font color='#e78608'>------解決策------------------</font><br /> このバッファは、ブラウザと Apache の特定のモジュールに関連しています。 <br />続けてみましょう<br />======================================<br /><dl class='code'>PHP コード<pre class="brush:php;toolbar:false"> ob_end_clean(); apache_setenv('no-gzip', 1); ini_set('zlib.output_compression', 0); ini_set('implicit_flush', 1); ob_start();//データのバッファリングを開始 for($i = 1; $i <= 100; $i ){ $sourceName = 'filetoupload' . $i; $imageArray = 配列(); $message = "画像 $i がサーバーにアップロードされました<br/>"; echo $message.str_repeat(" ",1024);//IE にはデフォルトの 1k バッファがあります ob_flush(); フラッシュ(); usleep(500000); <div class="clear"></div>