[PHP-users 14386]Re: requireとflockについて

SATOH Fumiyasu fumiya @ samba.gr.jp
2003年 3月 31日 (月) 12:13:08 JST


At Mon, 31 Mar 2003 08:59:02 +0900 (JST),
いちろう たこす wrote:
> 画面共通で頻繁に呼び出すcommon.incファイルをrequireで呼
> び出して使っている場合に、common.inc自体をflockを使って
> 下記のように修正した場合、例えば書き込んでる最中にrequir
> eされたりしたらどうなるんでしょうか?

ほかに何も細工していないのであれば、flock() はただのアドバイザリ
ロック (advisory lock) なので、書き込んでいる途中の中身が require で
読み込まれてしまうでしょう。「アドバイザリロック」の意味は
http://www.google.co.jp とかで調べればわかるかと。「強制ロック
(mandatory lock)」も参照。

PHP が require するファイルのロック状態をチェックしていれば、
ロックが解かれるまで待つでしょうけどね。(そんな仕様、ありましたっけ?)

Windows では違うかもしれません。(どうなるか知りません)

> $mFp = fopen(CONFIG_PATH."common.inc", "r+");
> flock($mFp,LOCK_EX);
> set_file_buffer($mFp, 0);
> rewind($mFp);
> fputs($mFp, $lLine);
> ftruncate($mFp,ftell($mFp));
> flock($mFp, LOCK_UN);
> fclose($mFp);

-- 
-- Name: SATOH Fumiyasu  -- Home: http://www.sfo.jp (in Japanese only)
-- Mail: fumiya @net-thrust.com, @samba.gr.jp, @namazu.org or ...


PHP-users メーリングリストの案内