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

Osamu Shigematsu shige @ ravi.ne.jp
2004年 1月 14日 (水) 14:22:09 JST


重松です。

> 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 メーリングリストの案内