[PHP-users 28494] Re: header やreadfileを実行するとそのページが2〜3回実行される

ゆむ qqqz9b69 @ green.ocn.ne.jp
2006年 2月 20日 (月) 16:24:13 JST


横から失礼します。

> // ここからWindows COMのプログラム
> // ここでWAVファイルを作成します。
>   ・
>   ・
>   ・
コレを除去して、サーバ上にあるwavファイルを吐くようにしても複数回実行さ
れるのでしょうか。

とか何とか言う前に、そもそもブラウザは何を使用しているのでしょう??

-- 
ゆむ

↓↓↓↓↓↓↓↓↓ Original Message ↓↓↓↓↓↓↓↓↓
From:    FELLOW 大山 <ohyama @ fellow-inc.co.jp>
To:      "PHP-users ML" <php-users @ php.gr.jp>
Date:    Mon, 20 Feb 2006 13:32:24 +0900
Subject: [PHP-users 28491] Re: header やreadfileを実行するとそのページが2〜3回実行される
- - - - - - - - - - - - - - - - - - - - 
> nomoto様
> 
> 大山です。
> 
> アドバイスありがとうございます。
> 
> >> いろいろ試した結果、header関数やreadfile関数を一度でも実行すると
> >> 現象が発生します。
> >という現象と食い違っています。
> これはあくまで私の作成したソース内での結果です。
> すみません、説明不足で。。。
> 
> Windows COMで作成されたソース等は残念ながら公開する
> わけにはいかず簡単にはまとめられません。
> その前後の部分は全く同じソースになっています。
> また
> <?php
> session_start();
> if (isset($_SESSION['count'])) {
>   if ($_SESSION['count'] >= 99) {
>     $_SESSION['count'] = 1;
>   } else {
>     $_SESSION['count'] ++;
>   }
> } else {
>   $_SESSION['count'] = 1;
> }
> 
> $fname = "./tts_" . $_SESSION['count'] . ".wav";
> 
> // ここからWindows COMのプログラム
> // ここでWAVファイルを作成します。
>   ・
>   ・
>   ・
> までのソースで実行する分には1回しか実行されていません。
> 
> その先の
> if (file_exists($fname)) {
>   header("Content-Type: audio/x-ms-wma");
>   header("Content-Disposition: inline; filename=./" . $fname);
>   header ("Content-Length: " . filesize($fname));
>   set_time_limit(0);
>   @readfile($fname);
>   unlink($fname);
> }
> を含めると2〜3回実行されてしまいます。
> 
> またheader("Content-Type: audio/x-ms-wma");だけを実行して
> その後をコメントにしても2〜3回実行されてしまいます。
> 例)
> if (file_exists($fname)) {
>   header("Content-Type: audio/x-ms-wma");
> //  header("Content-Disposition: inline; filename=./" . $fname);
> //  header ("Content-Length: " . filesize($fname));
> //  set_time_limit(0);
> //  @readfile($fname);
> //  unlink($fname);
> }
> 
> 同じく@readfile($fname);だだけを実行して
> その前後をコメントにしても2〜3回実行されてしまいます。
> 例)
> if (file_exists($fname)) {
> //  header("Content-Type: audio/x-ms-wma");
> //  header("Content-Disposition: inline; filename=./" . $fname);
> //  header ("Content-Length: " . filesize($fname));
> //  set_time_limit(0);
>   @readfile($fname);
> //  unlink($fname);
> }
> 
> ※上記の2つの例のソースはどちらもsession_start();〜を含みます。
> 
> header関数にキャッシュ関係のコードを追加しても実行してもだめでした。
> 例)
> header("Cache-Control: public");
> header("Pragma: public");
> 
> ↑はあまり意味が無いかもしれませんが。。。
> 
> 以上です。
> 宜しくお願い致します。
> 
> 
> >>> <?php
> >>> header( "Content-Type: text/plain");
> >>> readfile( __FILE__);
> >>> ?>
> >>
> >>を実行してみたところ、1回しか実行されていないようです。。。
> >
> >という事は、大山様のおっしゃる
> >> いろいろ試した結果、header関数やreadfile関数を一度でも実行すると
> >> 現象が発生します。
> >という現象と食い違っています。
> >
> >・・という事は、原因はheader関数やreadfile関数ではなく
> >そのソースの他の箇所にあるという事になると思います。
> >
> >原因の特定のためには、問題を起こしているソースをあちこち省略して
> >「2〜3回実行されてしまうという現象が再現できる最小のソース」を
> >作ってみてください。それがデバッグの一番の近道です。
> >
> >その過程で別な原因が見つかるかも知れませんし、最小のソース
> >であれば他の方へそのまま提示してアドバイスをもらいやすいと
> >思います。
> 
> 
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
↑↑↑↑↑↑↑↑ Original Message Ends↑↑↑↑↑↑↑↑


PHP-users メーリングリストの案内