[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&para2=xx&para3=xx
test.phpの中でcomプログラムを実行して、WAVファイルを出力し、
それをダウンロードさせて再生させるようなプログラムを
作成しています。
その時、クライアントから一度、test.php?para1=xx&para2=xx&para3=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 メーリングリストの案内