[PHP-users 30561] Re: セッションを NFS 経由で共有してみました。
Shu Sawada
luna @ lunanet.gr.jp
2006年 10月 19日 (木) 13:37:45 JST
さわだです。
> 特にFirefoxだと、WebサーバのDNS引き結果をキャッシュしている間隔は
> 1分くらいしかないみたいですから、おっしゃっている現象は
> 頻繁には起きないにせよ無視できるものじゃないですねこれは。
なんと、そうなんですね。それは知りませんでした(苦笑
なぜかはわかりませんが、とりあえずロックの問題でNFSでは使用不可と
思い込んでいました。現実的に無視できるリスクかどうかの判断は
微妙なところですね。
その後、某blogにて
> ちなみに、PHPはconfigureした後、
> main/php_config.h
>
> /* Define if you have the flock function. */
> #define HAVE_FLOCK 1
>
> をコメントアウトする事でflock()からfcntl()へ変更する事が出来る。
> たしか、デフォルトでインストールされているRPM PHPは
> flock()を使うはずなので、NFSでのロードバランス環境利用は不可。
という記載を見つけました。
(MLで個人blogのURLは提示すべきなのでしょうか?ちょっと判らないのでとりあえず保留)
やっていることは同じだと思います。
HAVE_FLOCKを0にすることで、常にflock()の代わりにfcntl()を使うようになるので、
NFSで使用可能になる、ということを仰っているのかな、と。
#先のパッチは、強制的にflock()ではなくfcntl()を実行させるものです。
> #で、ご提案のパッチなんですが
> #すいません、知識が追いつかなくてよくわからんです。^^;;;;
> #他の識者に期待。
ありがとうございます。
といっても、もしかしたらこれだ、という正解は無いのかも、、、という気がしています。
処理系によってfcntl()が使えたり使えなかったり、みたいな。
色んな処理系があるから難しいんですよねきっと。
if (data->fd != -1) {
#if HAVE_STRUCT_FLOCK
php_flock(data->fd, LOCK_EX);
#else
flock(data->fd, LOCK_EX);
#endif
とかじゃダメなのかなぁ。
--
Shu Sawada
http://luna.lunanet.gr.jp/
http://www.cycleof5th.com/
PHP-users メーリングリストの案内