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 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
php学习之简单计算器实现代码
Jun 09 PHP
php数组中删除元素的实现代码
Jun 22 PHP
PHP输出时间差函数代码
Jan 28 PHP
深入PHP异步执行的详解
Jun 03 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
Dec 13 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
前台接待的工作职责
2013/11/21 职场文书
数控专业推荐信范文
2013/12/02 职场文书
经典演讲稿范文
2013/12/30 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
学生检讨书如何写
2014/10/30 职场文书
新郎新娘致辞
2015/07/31 职场文书