模拟flock实现文件锁定_php教程-查字典教程网
模拟flock实现文件锁定
模拟flock实现文件锁定
发布时间:2016-12-29 来源:查字典编辑
摘要:主要提供了一种思路。$lock0和$lock1就是文件锁定的标识符,当文件被某一用户打开的时候,$lock0和$lock1就会产生,当该文件...

主要提供了一种思路。

$lock0和$lock1就是文件锁定的标识符,当文件被某一用户打开的时候,$lock0和$lock1就会产生,当该文件没打开则不存在。

其实最关键就是有个标识符来表示当前这个文件的状态,$lock0和$lock1就是起这样的作用。

复制代码 代码如下:

<?php

//Lockafile,timingoutifittakestoolong.

functionlock($lock,$tries){

$lock0=".{$lock}0";

$lock1=".{$lock}1";

for($i=0;$i<$tries;$i++){

if(!is_file($lock0)){

touch($lock0);

if(!is_file($lock1)){

touch($lock1);

return1;

}

}

usleep(100);

}

return0;

}

//Unlockafile.

functionunlock($lock){

unlink(".{$lock}1");

unlink(".{$lock}0");

}

//Usageexample.

$filename="somefile";

$data="stuffandthingsn";

$tries=10;

if(lock($filename,$tries)){

$h=fopen($filename,"a")ordie();

fwrite($h,$data);

fclose($h);

/**

*另外一个进程写文件,检查是否锁定

*/

if(lock($filename,$tries)){

$h2=fopen($filename,"a")ordie();

fwrite($h2,'checklock');

fclose($h2);

}else{

//die("Failedtolock$filenameafter".($tries*100)."milliseconds!";

}

unlock($filename);

}else{

//die("Failedtolock$filenameafter".($tries*100)."milliseconds!";

}

?>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类