• ベストアンサー

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

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

  • 全てのhtml部分をphpで出力

    はじめまして、php初心者です。 全てのHTML部分をprint文で出力してコードを記述しています。 <?php print("<HTML><BODY>~") print("</BODY></HTML>") ?> ↑こんな感じです。 ですが、よくみる参考書などでは下のように php部分とhtml部分を分けて記述しています。 <?php phpコード ?> <HTML><BODY>~ </BODY></HTML> ↑このように記述することに特に意味はあるのでしょうか? 見やすいだけですか? 個人的には全てphpで出力して記述するほうが書きやすいのですが print文だと処理速度が結構遅くなるとか、何かあるのでしょうか?

    • 締切済み
    • PHP
  • PHPプログラムの実行

    だいぶ古いバージョンですが、CDロムからXAMPP(xampp-win32-1.6.4-installer.exe)をインストールし、簡単なPHPスクリプトを書いて実行しましたが、HTML で表記したヘッダー部分以外は、ブラウザ画面に何も現れません。 スクリプトは次のようなもので、XAMPPのhtdocsフォルダー にsample.html としてセーブしてあります。 <html> <head> <title> sample of PHP program </title> </head> <body> <h1> sample </h1> <?php echo "Welcome"; ?> </body> Apache サーバーはちゃんと走ってます。なぜ何も表示されないのでしょうか? 何かコンフィグレーションファイルのようなものを編集する必要があるのでしょうか?詳しい方、どうぞ教えてください。お願いします。

    • ベストアンサー
    • PHP
  • htmlを含まないphpファイルにもHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか?

    私はフォームにデータを入力するファイル(enter.html)、それをチェックするファイル(check.php)及びデータをメールで送信するファイル(mail.php)を分離しています。 これらのファイルの内、ブラウザーにファイル内のHTMLコードが出力されるのは、データを入力するファイル(enter.html)だけです。 入力されたデータをチェックするファイル(check.php)及びデータをメールで送信するファイル(mail.php)は、phpのechoを使用して、入力エラーがあったり、メールが送信された場合にその旨のメッセージをブラウザーに表示しますが、HTMLは含みません。 そのため、データを入力するファイル(enter.html)には、<meta http-equiv="Content-Type" content="text/html; charset=utf-8">とエンコード形式(UTF-8)をHTMLヘッダー内に記述しているのですが、htmlを含まないphpファイル(check.php及びenter.html)にも<meta http-equiv="Content-Type" content="text/html; charset=utf-8">などのようにHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか? よろしくお願いします。 キャサリン

    • ベストアンサー
    • PHP
  • ブラウザ上に出せますか!?

    echo (float)'15foo', PHP_EOL;   // 15 echo (float)'15.33foo', PHP_EOL; // 15.33 echo (float)'1e2foo', PHP_EOL; // 100 (1e2) echo (float)'foo', PHP_EOL; // 0 以上ですが、  ブラウザ上に結果を出せますか!? もし、ブラウザ上に出すには、後!どんなプログラムが必要ですか!? 分かりません、宜しくお願いします。

    • ベストアンサー
    • PHP
  • HEADERについて

    無知でお恥ずかしいのですが、PHPで出力する際 header("Content-Type: text/html;charset=EUC-JP"); などと最初にヘッダーを出力すると思うのですが、例えばtest.phpが以下のようになっていた場合でもPHPでヘッダーを出力する必要があるのでしょうか? test.php ※1<?php header("Content-Type: text/html;charset=EUC-JP"); ?> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> <TITLE></TITLE></HEAD> <BODY> TEST <?php echo $test; ?> </BODY> </HTML> 参考書などを見てみると「全ての出力の前に記述する必要がある」と書いてあるだけで、書かずとも正常に表示されますし、仮に文字化けしても <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> と追加すれば文字化けも解決するので、疑問は感じつつも思い出したときにPHPにもヘッダを記述するようにしていたのですが、少しづつPHPを勉強しやれる事が増えてくる内に、記述してあるものと記述して無いものが混在してきて気持ち悪く感じてきました。 皆さんはどのようにされていますか? ※他サイトで配布されているPHPスクリプトなども見てみたのですが、毎回記述している方、一切記述していない方それぞれでした。 あと、全く違う質問ですが、MYSQL接続中にエラー処理でexit;する場合、exit;する前にMYSQL接続を切断する必要ってあるのでしょうか?

    • ベストアンサー
    • PHP
  • ¥マークを出力したいがバックスラッシュが表示される

    PHPで「\」(半角)を出力したいが、\\で改行できません。 ブラウザではバックスラッシュ記号が表示されます。EUC-JP環境では問題なかったのですが。。 ・サーバ CentOS5.4(文字コードutf-8) ・テキストエディタ 秀丸(文字コードutf-8)で記述し保存しサーバにアップロード ・ブラウザ(IE6) phpでヘッダー出力しているのでブラウザのエンコードは UTF-8となっており、日本語は文字化けしません。 ****ソースコード*** <?php //ヘッダー出力 header('Content-Type: text/html; charset=utf-8'); ?> <html> <head> <title>テスト</title> </head> <body> <!-- PHP --> <?php echo 'この商品は\\100です。<BR>'; //←これだとバックスラッシュ echo '改行します。\n改行しました。<BR>'; //←これだとバックスラッシュnと表示される echo '&yen'; //←これなら¥が出力される ?> </body> </html> utf-8文字コードでは\\では駄目なんですかね? ちなみにブラウザ→ソース表示を見るとhtml内には \という文字は帰ってきていますが、ブラウザの表示が utf-8では「\」は「\」として表示されないのでしょうか? 助けてください。

    • 締切済み
    • PHP
  • ブラウザに日本語出力

    初めまして、PHP初心者です。 PHPで現在、日報を書き込むプログラムを作っています。 目的としては、書き込んだ日報をDBに登録させるというプログラムです。 その中で、HTMLのフォームで入力した日本語の文章や文字列をブラウザに出力させるにはどうしたら良いのでしょうか? 普通にprintで出力させると、文字化けをしてしまい困っております。 環境は、OSはLinux、PHPVer.3、DBはPostgreSQLです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPからCプログラムを実行して実行結果をHTML上に表示

    PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。 Cプログラムの中身は、 #include <stdio.h> int main(){ printf("Hello."); } です。 phpの中身は、 <HTML> <HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD> <BODY> <?php $cmd = "test.exe"; $a = exec($cmd); echo $a; ?> </BODY> </HTML> としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。

    • ベストアンサー
    • PHP
  • PHPのプログラムを作って動作検証のブラウザはどれ

    PHPやjQueryを含んだプログラムを作って動作検証するには、どのブラウザがいいでしょうか。 実行中のソースの確認、Javascriptのエラー、httpヘッダーの確認などがしたいです。

    • 締切済み
    • PHP
  • [AS3]phpやPerl等から送り返された情報のFlashでの取得

    http://www.at-sonic.com/blog/archives/2008/02/as3php.php のような感じのプログラムを作っています。 このPHPのソース中、データをFlashへ送り返す部分で、 echo "comp=" . $comptxt; と、compにcomptxtを代入する形でFlashへ渡しています。PHP等でPrintした場合などは、FlashへHTMLのテキストデータをブラウザでなくFlashへ返しているものと思うのですが、Flashへ送り返す情報は、どの様な形式で出力させないといけないのでしょうか? 当方ActionScript 3.0をCS3で使用しています。

    • ベストアンサー
    • Flash