模拟flock实现文件锁定


Posted in PHP onFebruary 14, 2007

主要提供了一种思路。
  $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制作静态网站的模板框架
Oct 09 PHP
分页显示Oracle数据库记录的类之一
Oct 09 PHP
PHPlet在Windows下的安装
Oct 09 PHP
PHP实现网上点歌(二)
Oct 09 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
PHP 错误之引号中使用变量
May 04 PHP
PHP 类型转换函数intval
Jun 20 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
php截取视频指定帧为图片
May 16 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 #PHP
简单采集了yahoo的一些数据
Feb 14 #PHP
自己前几天写的无限分类类
Feb 14 #PHP
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 #PHP
php中的一个中文字符串截取函数
Feb 14 #PHP
PHP音乐采集(部分代码)
Feb 14 #PHP
一个数据采集类
Feb 14 #PHP
You might like
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
Mac 上切换Python多版本
2017/06/17 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
通过代码实例了解Python异常本质
2020/09/16 Python
如何利用python生成MD5并去重
2020/12/07 Python
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
百度吧主申请感言
2014/01/12 职场文书
2014新年寄语
2014/01/20 职场文书
股东协议书
2014/04/14 职场文书
个性婚礼策划方案
2014/05/17 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
2016教师节感恩话语
2015/12/09 职场文书