模拟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 遍历XP文件夹下所有文件
Nov 27 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
PHP5函数小全(分享)
Jun 06 PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP实现合并discuz用户
Aug 05 PHP
PHP基本语法实例总结
Sep 09 PHP
php中各种定义变量的方法小结
Oct 18 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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制作的意见反馈表源码
2007/03/11 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
深入PHP FTP类的详解
2013/06/13 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
Promise扫盲贴
2019/06/24 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
python实现淘宝购物系统
2019/10/25 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
python mock测试的示例
2020/10/19 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
跟单业务员岗位职责
2014/03/08 职场文书
销售主管竞聘书
2014/03/31 职场文书
信用卡工作证明模板
2014/09/14 职场文书
股权转让协议范本
2014/12/07 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
大学学生会辞职信
2015/05/13 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL