• ベストアンサー

プログラムがすべて終わってからブラウザで見えるのか?

PHPでいろいろ作ってる初心者です。 PHPのプログラムの最初の方で、HTMLのヘッダーやタイトルなんかを出力する部分があるとします。 その後にいろいろデータを読んで計算して記述内容を決める部分があるとします。 このような場合、見てる人はこの計算が終わるまで、タイトル(つまり計算前にechoなどで出力した部分)はブラウザでは見えないのでしょうか? 以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

出力バッファの制御をする事で、スクリプト終了前に画面を出力する事はできます。簡単に行うには、途中でも出力したい箇所でob_flush()関数を実行します。 デフォルト状態でのPHPはprint文などの結果を出力バッファに溜めています。そしてスクリプトの終わりでflush(ブラウザにデータを送る)しています。これをコントロールする事ができます。参考URLを見て下さい。 一般的ではないのですが、非常に時間がかかる処理をする時にブラウザ側のタイムアウトを避ける為、処理をしながら何らかの出力("."とか)をし続けてやったりします。例えばループをしながらDBの内容を1件づつ変換するような場合です。サーバーからデータが一定時間来ないとブラウザがタイムアウトになってしまう場合があるので、このようにサーバーからの出力を続ける事でこれを回避します。

参考URL:
http://www.php.net/manual/ja/ref.outcontrol.php
danadana
質問者

お礼

なるほど、そういうやりかたがあるのですね。 とても参考になりました。 早速の回答ありがとうございました。

その他の回答 (1)

  • exepieco
  • ベストアンサー率27% (25/91)
回答No.1

PHPはサーバ上で動作します。 ブラウザから要求を受け取ったApacheがスクリプトを処理し、ブラウザに解釈可能なページを生成してから、ブラウザに返します。したがって、処理が終わるまで返すべきページが生成できない=見ることはできない、ということになります。 あまりに処理が長くなる場合には、処理中に表示するページを別に用意するとよいでしょうね

danadana
質問者

お礼

そういう流れになるわけですね。 よくわかりました。 早速の回答ありがとうございました。

関連するQ&A