模拟flock实现文件锁定

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

复制代码 代码如下:

<?php  

// Lock a file, timing out if it takes too long.  
function lock ($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);  
                               return 1;  
                       }  
               }  
               usleep(100);  
       }  
       return 0;  
}  

// Unlock a file.  
function unlock ($lock) {  
       unlink(".{$lock}1");  
       unlink(".{$lock}0");  
}  

// Usage example.  
$filename = "somefile";  
$data = "stuff and thingsn";  
$tries = 10;  
if (lock($filename, $tries)) {  
       $h = fopen($filename, "a") or die();  
       fwrite($h, $data);  
       fclose($h);  
       /**  
         * 另外一个进程写文件,检查是否锁定  
       */  
       if (lock($filename, $tries)) {  
               $h2 = fopen($filename, "a") or die();  
               fwrite($h2,'check lock');  
               fclose($h2);  
        }else{  
            //die("Failed to lock $filename after ".($tries*100)." milliseconds!";  
        }  
        unlock($filename);  
} else {  
       //die("Failed to lock $filename after ".($tries*100)." milliseconds!";  
}  
?> 

相关文章

  • php仿微信红包分配算法的实现方法

    php仿微信红包分配算法的实现方法

    这篇文章主要介绍了php仿微信红包分配算法的实现方法,涉及简单的php数学运算与字符串操作相关技巧,需要的朋友可以参考下
    2016-05-05
  • 微信公众号用户与网站用户的绑定解决方案分析

    微信公众号用户与网站用户的绑定解决方案分析

    这篇文章主要介绍了微信公众号用户与网站用户的绑定解决方案,结合实例形式分析了微信公众号用户与网站用户绑定的原理、操作步骤、技巧与相关注意事项,需要的朋友可以参考下
    2019-04-04
  • 适用于初学者的简易PHP文件上传类

    适用于初学者的简易PHP文件上传类

    这篇文章主要为大家分享了一个适用于初学者的简易PHP文件上传类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • PHP服务端环境搭建的图文教程(分享)

    PHP服务端环境搭建的图文教程(分享)

    下面小编就为大家分享一篇PHP服务端环境搭建的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • php heredoc和phpwind的模板技术使用方法小结

    php heredoc和phpwind的模板技术使用方法小结

    Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术。但是现在的一些论坛程序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实现了界面与代码的准分离,phpwind就是一个典型的例子。
    2008-03-03
  • PHP实现表单处理方法详解

    PHP实现表单处理方法详解

    本文章向大家介绍PHP 表单处理,主要包括PHP 表单处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下
    2022-12-12
  • PHP 弱引用的相关总结

    PHP 弱引用的相关总结

    这篇文章主要介绍了PHP 弱引用的相关总结,帮助大家更好的理解和学习使用PHP,感兴趣的朋友可以了解下
    2021-05-05
  • php以post形式发送xml的方法

    php以post形式发送xml的方法

    这篇文章主要介绍了php以post形式发送xml的方法,包括了curl与fsockopen两种方法,具有不错的参考价值,需要的朋友可以参考下
    2014-11-11
  • PHP中的命名空间相关概念浅析

    PHP中的命名空间相关概念浅析

    这篇文章主要介绍了PHP中的命名空间相关概念浅析,从广义上来说,命名空间是一种封装事物的方法,在很多地方都可以见到这种抽象概念,需要的朋友可以参考下
    2015-01-01
  • php使用redis的有序集合zset实现延迟队列应用示例

    php使用redis的有序集合zset实现延迟队列应用示例

    这篇文章主要介绍了php使用redis的有序集合zset实现延迟队列,结合具体实例形式分析了PHP基于redis的有序集合zset实现延迟队列的具体原理、应用场景及相关操作技巧,需要的朋友可以参考下
    2020-02-02

最新评论