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 相关文章推荐
PHP制作图型计数器的例子
Oct 09 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
分享一个php 的异常处理程序
Jun 22 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP的PDO连接讲解
Jan 24 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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
php实现mysql数据库备份类
2008/03/20 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
Python制作刷网页流量工具
2017/04/23 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
python 通过exifread读取照片信息
2020/12/24 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
Java如何读取CLOB字段
2013/10/10 面试题
会计电算化专业应届大学生求职信
2013/10/22 职场文书
社区居务公开实施方案
2014/03/27 职场文书
环保倡议书
2014/04/14 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
办护照工作证明
2014/10/01 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js