[PHP-users 19889]Re: flock関数による排他ロックについて

lavlav @ paw.hi-ho.ne.jp lavlav @ paw.hi-ho.ne.jp
2004年 1月 14日 (水) 14:48:55 JST


近藤です。

> > LOCK_SH
> > LOCK_EX
> > この2つの違いが分かりません。
> > マニュアルには説明書きがあるのですが理解できないです…。
> SH は複数でロックを共有できますが、
> EX は単一のプロセスのみがロックできます。

ん?複数でロックを共有??
意味が分からないです。m(_ _)m

私の考え方として、

◇LOCK_SH
読込みならいつでもどうぞ。
だけど書込みは誰にも許さないっ!

◇LOCK_EX
ご主人しか読込みさせない!
書込みもご主人様だけだっ!

と言う認識でいるのですがどうですか?

> > LOCK_NB
> > これの使い道が分かりません。
> ブロックしません。
> 普通は、ロックできるまで待ちますが、このフラグを指定すると待たないです。
> ロックできなければエラーが帰るので、ロックできなかったことを知ることがで
> きます。

普通、ロックに失敗しましたらロックに成功するまで待機すると思いますが、
LOCK_NBを指定するとロックに失敗したら「はい、残念でした」で終わりって
認識であってますか?




> 重松です。
> 
> > LOCK_SH
> > LOCK_EX
> > この2つの違いが分かりません。
> > マニュアルには説明書きがあるのですが理解できないです…。
> 
> SH は複数でロックを共有できますが、
> EX は単一のプロセスのみがロックできます。
> 
> > LOCK_NB
> > これの使い道が分かりません。
> 
> ブロックしません。
> 普通は、ロックできるまで待ちますが、このフラグを指定すると待たないです。
> ロックできなければエラーが帰るので、ロックできなかったことを知ることがで
> きます。
> 
> for ($i = 0; !($result = flock($fd, LOCK_EX | LOCK_NB)) && $i < 10; ++$i)
> {
> sleep(1);
> }
> 
> のようにすると、ロックを試み、失敗したら 1 秒待ち、再度 10 回まで
> ロックを試みると思います。
> 
> # 試してません。
> 
> -- 
> Osamu Shigematsu
> http://www.ravi.ne.jp/%7eshige/
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 



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