• 締切済み

IE8でのPHPの処理の途中結果表示方法について

PHPの処理の途中結果を表示させようとして、下記ブラウザで結果を確認しました。 -処理内容- for($i = 0;$i<10;$i++){ ~とある処理~ ob_flush(); flush(); } --- ・Firefox ・Google Chrome  ・Internet Explorer 8(以下IE8) IE8以外だと想定通りの結果が表示されますが、IE8のみ、全ての処理が完了してから、表示されます。 Googleで検索した所、IE(IE8かどうかは不明)だと256バイトの出力を受けてからページを表示し始める、と書いてあったので、下記処理を追加しました。 参考:http://php.net/manual/ja/function.flush.php -処理内容- for($i = 0;$i<10;$i++){ ~とある処理~ for($ie = 0;$ie<256;$ie++){ echo ' '; } ob_flush(); flush(); } --- しかし、結果は変わりませんでした。 IE8で、PHPの処理の途中結果を表示させる方法についてアドバイス頂けないでしょうか。 宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数3

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

デバッグで何らかの経過を見たいなら レスポンスじゃなくてlog4phpを使うことも 考えたら如何でしょう。 http://www.nurs.or.jp/~sug/soft/log4j/log4php1.htm

iagusak
質問者

お礼

ご回答ありがとうございます。 >デバッグで何らかの経過を見たいなら >レスポンスじゃなくてlog4phpを使うことも考えたら如何でしょう。 log4phpは扱ったことが無い(初めて聞いた)ので、参考にさせていただきます。 今回はデバッグ目的ではなく、WEBページ上に、PHPの途中処理の結果を出力させたかったのですが、ここの処理以外に問題がある可能性があるので、後は自力で解決したいと思います。 有難うございました。

回答No.1

for($ie = 0;$ie<256;$ie++){ echo ' '; } for($i = 0;$i<10;$i++){ ~とある処理~ ob_flush(); flush(); }

iagusak
質問者

お礼

ご回答有難うございます。 for文のとある処理の手前で、空白256個を出す処理を行うようにしましたが、 結果は変わりませんでした。 ここの処理以外に問題がある可能性があるので、後は自力で解決したいと思います。 有難うございました。

関連するQ&A

  • jQueryのAjaxで通信の途中結果を取得したい

    jqueryのajaxを使って通信先のphpが発行するhtmlを受信して受信側の<div id="data"></div>に 表示させているのですが、通信先のphpが処理して生成したhtmlの途中結果を受信して 表示させるにはどのようにすれば良いのでしょうか? 例えば通信先のphpを <?php ob_start(); for ( $i = 1; $i <= 100000; $i++ ) {  if ($i % 100 == 0) {   echo "■";  }  @ob_flush();  @flush();  usleep(30000); } ?> このようにして受信側を <div id="data">■■■</div> というようにプログレスバーみたいに次々と■を増やしていきたいのですが、実行してみると最終結果の <div id="data">■■■■■■■■■■■■■■■■■■■■■■■■(…省略)</div> だけが出力されてしまいます。 どのようにすれば良いのか教えて頂きたいです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • AJAX
  • 【PHP】関数で処理が止まってる??

    お世話になります。 PHPでの質問ですが、PHPに限ったものではないように思いますので、プログラム全般に対しての質問と思って下さって結構です。 ※PHP特有のという意見があれば、それも大歓迎です。 下記のようなコードを組んでみました。 <?php echo "func1の結果["; echo func1(); echo "]"; function func1(){ (内容は割愛) return TRUE; } ?> このコードをアップしてアクセスしてみると   出力結果  func1の結果[ でした。 ブラウザのステータスに「ページが表示されました」とあるので、処理中で出力待ちということはないと思います。 > echo func1(); > echo "]"; の箇所の出力はどうなっていると考えればいいのでしょうか? 「関数の内容次第で・・・」とお答えになる方、どういう内容だとこのような結果になるのかというところでお答えください。 私のプログラムによる根本的な考え方は、プログラムは上から下に順番になので、 上記内容の箇所にどんなコードがあったとしても、func1関数はTRUEを返すので、結果としては「func1の結果[1]」となるはずでした。 でも実際の出力結果をみると処理が途中で(おそらくfunc1()内で)止まっているともいます。 timeoutではないため無限ループに嵌ってっていうのもないと思います。 これはどういうことでしょう???

    • 締切済み
    • PHP
  • PHPが処理を途中でやめる。原因を知りたい。

    PHPが処理を途中でやめるのですが、原因が分からないので教えてください。 Chromeで実行すると15秒ほど実行した後に101エラーが出ます。 なお、max_execution_timeは1800に設定してあります。 ブラウザを変えてやってみましたが、結果は同じような感じでした。 IEでは、「Internet Explorer ではこのページは表示できません」と出て、 Operaでは「接続はリモートサーバーから切断されました」と出ます。 コマンドプロンプトから実行しても同じように15秒ほど処理した後に、「CLIは動作を停止しました」と出ます。 いずれも、まったく処理していないわけではなく、停止するまでの15秒ほどは処理を進めてくれているようです。 原因分かりますでしょうか? XAMPP: 1.7.7 PHP: 5.3.8 Windows7(64bit) localhost上で実行しています。

    • ベストアンサー
    • PHP
  • phpの処理中に画面表示ををするには?

    phpの処理中に画面表示ををするには? phpの処理中にalertや画面表示ができるように依頼があり。 使ってはいけない方法もあり解決方法がみつからず困っています。 処理内容 5回ループする処理で1回の処理に約10秒かかる、 各回の処理が終わったところで画面表示やalertをする。 使ってはいけない方法 ・iframeやAjaxなどの非同期処理みたいな事はしない。(却下されました、、) ・このphpのループの各回でsubmitや再読み込みをさせない。 今までphpの処理が全て終わってから画面表示するイメージでいたので、 実現できるのか確認するため下記のソースを作りました。 結果:10秒ではなく50秒後にすべてのalertがでてきました。 ----------ここから---------- <html><head> <script> <!-- <? for(i=0; i<5; i++){ //10秒の処理 ?> alert("メッセージ:".i); <? } ?> //--> </script> </head> <body>無理な気がする</body> </html> ----------ここまで---------- (変数のダラは抜いています) 使ってはいけない方法以外に解決方法はあるのでしょうか。

    • ベストアンサー
    • PHP
  • htmlからのphp結果表示

    お世話になります。 掲題の件での質問ですが、行き詰まったので教えてください。 現在、以下の処理をしていますが (1)phpにてrss結果を取得し、echoにて出力 (2)htmlにて、(1)の結果を<iframe>にて取得して表示 (2)にて、インラインフレームではなく、通常の文章ライクに表示したいのですが 受け取り方、表示の仕方がわかりません。。。 <?php include("xxx.php"); ?> としても何も表示されないので困っています。 よろしくお願いします。

  • phpで5で割って余りを表示させない方法

    phpで5で割って余りを表示させない方法を探しています。 例えば <?php for ($i = 1; $i < 15; $i++) { echo $i; if ($i % 5 == 0) { echo "<br />"; }} ?> を実行させた場合 12345<br/> 678910<br/> 11121314 となりますが、この場合11から14までを表示させないようにすればどうすればできますか?

    • 締切済み
    • PHP
  • PHP + Oracleで『処理中です』を表示したい…

    PHP + Oracleで『処理中です』を表示したい… PHP5 + Oracle10gでの開発中です。 フォーム1(1.php)でUser・PWを入力し、 ボタンをクリックすると SQL(SELECT文)を実行して結果をフォーム2(2.php)に 表示する』といったものを開発したいと考えています。 結果画面でのSQL結果表示は問題なくできたのですが、 結果表示までに時間がかかってしまいます。 2.phpはこんな感じです。 <?php // POSTされたUser・PWのチェック // <head>をecho // Oracleに接続 // SQL実行 <-- これが時間がかかる // <body>をecho <-- <table>にSELECT結果をセット ?> そこで、SELECT結果を表示するまでの間『処理中です』みたいなものを 表示したいのですがどうしたらいいのでしょうか。 可能であれば、'処理中です'という文字と プログレスバーのようなGIFを表示したいと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 途中経過を表示させる方法は?

    JavaScript(jQuery) から $.ajax() で php の実行結果を受け取る作業をしています。 var msgObj = $("#result"); msgObj.text('処理中 ...'); setTimeout(function(){ $.ajax({ url: "hoge.php",type:"POST", async:true, cache:false, success: function(e){ msgObj.text(e); } }); }, 10); [hoge.php]  (処理1)  echo "処理1完了";  (処理2)  echo "処理2完了";   : hoge.php の処理が時間かかることを想定して、途中経過を表示させたいのですが、どのようにすればよいのでしょうか。 よろしくお願いします。

  • データーベースの結果セットを分けて表示する方法について教えてください(PHP&MYSQL)

    PHP5.2.4 MYSQL14.12DistriB5.0.4 WINXP IE6.0 やりたいこと、結果セットを分けて表示したい。 20行の結果セットがあるとして、結果セットを表示するのに、10行を表示し、その後10行を表示すると言うように、結果セットを分けて表示する方法を教えてください。現在、下のように考えていますが、これでは、表示が、同じになってしまいます。$row=mysql_fetch_array($result);を使っているのがいけないのでしょうが、どう変更したらいいのかわかりません。宜しくお願いします。   for($i=1;$i<10;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }   for($i=11;$i<21;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }

    • ベストアンサー
    • PHP
  • php ob_flushが全く動作しない

    echo "<p>処理を開始します。しばらくお待ちください…</p>\n"; echo str_pad(" ",4096)."\n"; ob_end_flush(); ob_start("mb_output_handler"); for ( $i = 1; $i <= 3; $i++ ) { sleep( 2 ); // 時間がかかる処理 echo "<p>". $i * 10 ."件の処理を完了しました</p>\n"; ob_flush(); flush(); } echo "処理が完了しました\n"; サンプルのプログラムを記述しておきます。 重要な点として、 1.以前は正常に動作していました。 2.サンプル実行で実際の動きを見せるようなっている他サイトも動作しません。   それらは、おそらく、正常に動作しているのでしょうが・・・・。 このプログラムを実行しているサーバーの問題ではない気がします。 なぜなら、他のサンプルサイトの実行結果も、正常に動作しないからです。 firefox , IE8 どちらも、全ての処理が終わってから、まとめて表示されます。 あらゆる対処方を施しましたが、結果は変わりません。 これは、私のパソコンがおかしいのでしょうか? パソコン側で設定する事など出来るのでしょうか? 原因や対処方が分かる方がいらっしゃいましたらご教示お願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう