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下10件你也许并不了解的事情
Sep 11 PHP
据说是雅虎的一份PHP面试题附答案
Jan 07 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php实现的ping端口函数实例
Nov 12 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
浅谈PHP封装CURL
Mar 06 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 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日期和时间函数集合
2007/11/16 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
python实现web方式logview的方法
2015/08/10 Python
python3中int(整型)的使用教程
2017/03/23 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python实现猜拳游戏
2020/03/04 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
应届生.NET方向面试题
2015/05/23 面试题
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
工商局个人工作总结
2015/03/03 职场文书
情人节单身感言
2015/08/03 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
正确使用MySQL update语句
2021/05/26 MySQL
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS