• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

模拟flock实现文件锁定_php技巧

php 搞代码 3年前 (2022-01-26) 12次浏览 已收录 0个评论

主要提供了一种思路。
$lock0和$lock1就是文件锁定的标识符,当文件被某一用户打开的时候,$lock0和$lock1就会产生,当该文件没打开则不存在。
其实最关键就是有个标识符来表示当前这个文件的状态, $lock0和$lock1就是起这样的作用。

<?php   <br><br>// Lock a file, timing out if it takes too long.   <BR>function lock ($lock, $tries) {   <BR>       $lock0 = ".{$lock}0";   <BR>       $lock1 = ".{$lock}1";   <BR>       for ($i=0; $i<$tries; $i++) {   <BR>               if (!is_file($lock0)) {   <BR>                       touch($lock0);   <BR>                       if (!is_file($lock1)) {   <BR>                               touch($lock1);   <BR>                               return 1; <b>/本文来源gao@!dai!ma.com搞$$代^@码5网@</b><strong>搞代gaodaima码</strong>  <BR>                       }   <BR>               }   <BR>               usleep(100);   <BR>       }   <BR>       return 0;   <BR>}   <br><br>// Unlock a file.   <BR>function unlock ($lock) {   <BR>       unlink(".{$lock}1");   <BR>       unlink(".{$lock}0");   <BR>}   <br><br>// Usage example.   <BR>$filename = "somefile";   <BR>$data = "stuff and thingsn";   <BR>$tries = 10;   <BR>if (lock($filename, $tries)) {   <BR>       $h = fopen($filename, "a") or die();   <BR>       fwrite($h, $data);   <BR>       fclose($h);   <BR>       /**   <BR>         * 另外一个进程写文件,检查是否锁定   <BR>       */   <BR>       if (lock($filename, $tries)) {   <BR>               $h2 = fopen($filename, "a") or die();   <BR>               fwrite($h2,'check lock');   <BR>               fclose($h2);   <BR>        }else{   <BR>            //die("Failed to lock $filename after ".($tries*100)." milliseconds!";   <BR>        }   <BR>        unlock($filename);   <BR>} else {   <BR>       //die("Failed to lock $filename after ".($tries*100)." milliseconds!";   <BR>}   <BR>?> <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:模拟flock实现文件锁定_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址