模拟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 相关文章推荐
初探PHP5
Oct 09 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
有关php运算符的知识大全
Nov 03 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP文件读取功能的应用实例
May 08 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP变量的作用范围实例讲解
Dec 22 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获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python实现文本文件合并
2015/12/29 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
在django模板中实现超链接配置
2019/08/21 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Python super()方法原理详解
2020/03/31 Python
构建高效的python requests长连接池详解
2020/05/02 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
什么是Web Service?
2012/07/25 面试题
企业管理部经理岗位职责
2013/12/24 职场文书
18岁生日感言
2014/01/12 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
图书馆标语
2014/06/19 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
保险公司增员口号
2015/12/25 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers