[PHP-users 28483] Re: header や readfileを実行するとそのページが2〜3回実行される
satoshi@try-square.co.jp
satoshi @ try-square.co.jp
2006年 2月 20日 (月) 10:02:37 JST
藤本です。
PHPで排他制御することは出来そうですが。
回避方法の前に、原因を特定するのが先じゃないでしょうか。
以上
FELLOW 大山 <ohyama @ fellow-inc.co.jp>さん:
> 大山と申します。
>
> header関数やreadfile関数を実行するとその実行したページが
> 2〜3回実行されてしまいます。
> 回避方法をどなたかご存知ありませんか?
>
> サーバーの構成
> Windows 2003 Server
> IIS 6.0
> PHP 4.4.2
>
> パラメータを含むtest.phpを実行しています。
> 例)test.php?para1=xx¶2=xx¶3=xx
> test.phpの中でcomプログラムを実行して、WAVファイルを出力し、
> それをダウンロードさせて再生させるようなプログラムを
> 作成しています。
> その時、クライアントから一度、test.php?para1=xx¶2=xx¶3=xxを
> 実行しても実際は、サーバー側で2〜3回実行されてしまいます。
>
> 以下ソースを抜粋
>
> <?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ファイルを作成します。
> ・
> ・
> ・
>
> 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);
> }
> ?>
>
> このソースを一度実行すると$_SESSION['count'] が2〜3増えています。
> また当然ですがunlink($fname);しないとWAVファイルも2〜3出来ています。
> いろいろ試した結果、header関数やreadfile関数を一度でも実行すると
> 現象が発生します。
> 良く似た現象が[PHP-jp 11886]にありましたがこちらの方は
> $_SESSIONを使用すると同様の現象になっていたようですが
> 私の場合は$_SESSIONは問題ありませんでした。
>
> 分かりづらいメールではありますが、
> 宜しくお願い致します。
>
>
>
> _______________________________________________
> 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
----
藤本 悟司
株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル2F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/
Key fingerprint = 95F2 6B3D 0B8C 374A 5E67 CA02 F28F 703A C1A9 8346
PHP-users メーリングリストの案内