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 数组入门教程小结
May 20 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
Chrome Web App开发小结
Sep 04 PHP
分享一则PHP定义函数代码
Feb 26 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 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
德劲1104的电路分析与改良
2021/03/01 无线电
PHP开发大型项目的一点经验
2006/10/09 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
php 数组元素快速去重
2017/05/05 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
AngularJS中的表单简单入门
2016/07/28 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
js实现3D旋转效果
2020/08/18 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python小进度条显示代码
2019/03/05 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
村捐赠仪式答谢词
2014/01/21 职场文书
大学生军训感想
2014/02/16 职场文书
入学申请自荐信范文
2014/02/26 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
2014年财务部工作总结
2014/11/11 职场文书
行政司机岗位职责
2015/04/10 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
行为规范主题班会
2015/08/13 职场文书
python解析照片拍摄时间进行图片整理
2022/07/23 Python
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript