使用集群实现文件锁定的PHP
在官方文件的解释是,一群羊()允许你执行一个简单的读写模式,可以用在任何平台上,包括大多数的Unix衍生版本和Windows。如果锁被阻断(在ewouldblock错误代码的情况下),请设置可选的第三个参数为true。锁的操作也可以发布由Fclose(),也被称为自动代码执行时。
简而言之,它是一个文件,允许多个进程被限制访问文件锁操作,从而防止冲突。例如 uff1a
< PHP
文件大小= fopen(测试.txt
如果(羊群($文件,lock_ex))
{
文件(文件,写什么);
羊群($文件,lock_un);
}
其他的
{
错误锁定文件!;
}
Fclose(文件);
>
解释uff1a
1。代码的含义,打开文件test.txt读写,当用户调用的PHP页面下的test.txt文件操作,它将执行群($文件,lock_ex)代码,test.txt文件是一个互斥锁(文件只能读和写操作的用户),然后如果有其他的新用户访问该文件将被阻塞直到前,关闭文件(解锁)。
2、如果代码改变羊群($文件,lock_ex + lock_nb),这表明误差直接回来时锁定,如果有新的用户对文件的访问,它会输出错误锁定文件。
三.这个函数的语法是密排(文件,锁,块),文件是必需的。一个指定锁定或释放的打开文件。锁是必需的。指定要使用哪种类型的锁。块是可选的。如果设置为1或true,锁锁定时其他进程将被阻塞。
例如:请写一段PHP代码,以确保同时将多个进程写入同一个文件。
功能WriteData($路径,为模式,为数据)
{
FP = fopen(美元美元美元的路径、模式);
重试次数= 0美元;
max_retries = 100美元;
做{
如果($重试> 0)
{
Usleep(兰德(1, 10000));
}
重试次数= 1美元;
}而!羊群($ FP,lock_ex)和$重试<= max_retries美元);
如果($重试= $ max_retries)
{
返回false;
}
fwrite($ FP,数据美元;
羊群($ FP,lock_un);
Fclose($ FP);
返回true;
}
希望本文能对大家的PHP程序设计有所帮助。