[PHP-users 28481] header や readfileを実行するとそのページが2〜3回実行される
FELLOW 大山
ohyama @ fellow-inc.co.jp
2006年 2月 20日 (月) 09:53:14 JST
大山と申します。
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 メーリングリストの案内