我是靠谱客的博主 背后哈密瓜,最近开发中收集的这篇文章主要介绍flock lock ex php,PHP: flock - Manual,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

I just want to add a note about making atomic lock on NFS, there is only two

ways:

- 1 (the most robust but the most complicate) - It's to use link() to create a

hard link to a file you want to lock (on the same FS of course).

(On most NFS implementations, Link() is atomic)

Once you created a hard link (not a symbolic link), with a unique randomly

generated name, call stat() on it and count the number of link (nlink), if there

is only 2 then the file is locked.

If there is more than two you have to unlink() the link you just created and

create a new one with a new unique name (else NFS will use its cache and stat

will return wrong data) then call stat() on the new link and test the number of

links again, repeat this operation until you get the lock.

You have to use usleep() between the link() attempts with a fixed + random

sleep value to avoid dead lock situations (link() and unlink() may be atomic

but not instantaneous)

Also note than when you unlink a file through NFS, if NFS think that the file

is still in use, it will create a .nfs link to this file until it realizes the

file is no longer in use... A wrong timing could generate thousands of those

files and a deadlock situation.  Because of this when a deadlock situation

occurs or if your stat() command returns a very high number of links, you have

to look for .nfs file in the same directory you created your links and unlink

all the .nfs file you find (sometimes NFS take its time to remove them)

- 2 (the simplest) - the second method is to use a lock server and lock daemons

on each client that will forward lock request to the server... (this is more

dangerous than the first method because the daemons may be killed...)

Here is for reference the function I created to make atomic locks through NFS

(this function is in production since at least 4 years now), it's just for

reference because it uses many external functions to do its job but you can see

the principle:

http://pastey.net/85793

最后

以上就是背后哈密瓜为你收集整理的flock lock ex php,PHP: flock - Manual的全部内容,希望文章能够帮你解决flock lock ex php,PHP: flock - Manual所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部