検索
カレンダー
2008年5月
« 4月   9月 »
 123
45678910
11121314151617
18192021222324
25262728293031
ブログメニュー
Amazon検索
キーワード:

PHP経由でwmvを出力しているとMediaPlayerの起動に失敗する

2008年5月25日

PHP経由でwmvを出力していると、MediaPlayerを直接起動するとうまくいかず、ダウンロードなら正常に処理が実行されるという、なんだかよくわからない現象に遭遇しました。

解決するのに少し手間取ったのでメモ。

MediaPlayerとサーバとの通信をパケットキャプチャでみると、ダウンロードとの違いは、MediaPlayerは複数のコネクションを張るということっぽいです。
ということは、2本目以降のコネクションでPHPが途中で止まっているんではないか?と目星をつけてコードを地道に追いかけて行きました。

すると、どうやらsession_startで止まっているようです。

で、Google先生にお伺いしてみると、『セッションデータは、同時書き込みを防ぐためにロックされるため、あ る時点であるセッションの処理ができるスクリプトは、1つだけです。』 と仰るではないですか!うすうす感づいていたんですが、書いているところが地味すぎます…。

結局、時間がかかる処理(今回はwmvの出力)の前に、session_write_close関数を呼んで、セッションのロックを解放することにしました。

・・・PHPのセッションの保存先をファイルではなくメモリとかにすればロックされないんですかね?

(参考資料)
PHPマニュアル: session_write_close