手机
当前位置:查字典教程网 >编程开发 >php教程 >模拟flock实现文件锁定
模拟flock实现文件锁定
摘要:主要提供了一种思路。$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!";

}

?>

【模拟flock实现文件锁定】相关文章:

用PHP实现文件上传二法

递归实现php数组转xml的代码分享

php使用cookie实现记住用户名和密码实现代码

用PHP实现WEB动态网页静态

PHP实现远程下载文件到本地

用PHP生成自己的LOG文件

PHP4中实现动态代理

PHP滚动日志的代码实现

递归列出所有文件和目录

PHP实现文件安全下载

精品推荐
分类导航