PHP文件锁定写入实例解析


Posted in PHP onJuly 14, 2014

本文以实例讲述了PHP文件写入方法,以应对多线程写入,具体代码如下:

function file_write($file_name, $text, $mode='a', $timeout=30){ 
  $handle = fopen($file_name, $mode); 
  while($timeout>0){ 
    if ( flock($handle, LOCK_EX) ) { // 排它性的锁定
      $timeout--; 
      sleep(1); 
    } 
  } 
  if ( $timeout > 0 ){ 
    fwrite($handle, $text.'\n'); 
    flock($handle, LOCK_UN); 
    fclose($handle); //释放锁定操作
    return true; 
  } 
  return false; 
}

其中flock(int $handle, int $operation)函数操作的 handle 必须是一个已经打开的文件指针。

operation 可以是以下值之一:

要取得共享锁定(读取的程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。

此外, fclose()用来释放锁定操作,在代码执行完毕时调用。

PHP 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
php学习之 循环结构实现代码
Jun 09 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
ThinkPHP惯例配置文件详解
Jul 14 #PHP
2014年10个最佳的PHP图像操作库
Jul 14 #PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 #PHP
mantis安装、配置和使用中的问题小结
Jul 14 #PHP
kohana框架上传文件验证规则写法示例
Jul 14 #PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 #PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 #PHP
You might like
linux下 C语言对 php 扩展
2008/12/14 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
PHP实现文件上传与下载
2020/08/28 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python一键升级所有pip package的方法
2017/01/16 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
搞笑爱情保证书
2014/04/29 职场文书
空气环保标语
2014/06/12 职场文书
技术股份合作协议书
2014/10/05 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
公司开业主持词
2015/07/02 职场文书
同学联谊会邀请函
2019/06/24 职场文书
java基础——多线程
2021/07/03 Java/Android
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL