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 相关文章推荐
最省空间的计数器
Oct 09 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 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的优缺点
2015/07/14 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
JavaScript中的类继承
2010/11/25 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python中join函数简单代码示例
2018/01/09 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
python输出决策树图形的例子
2019/08/09 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
python实现超级马里奥
2020/03/18 Python
软件测试工程师面试问题精选
2016/10/28 面试题
项目合作协议书范本
2014/04/16 职场文书
骨干教师培训方案
2014/05/06 职场文书
成立公司计划书
2014/05/07 职场文书
合同意向书范本
2014/07/30 职场文书
党支部考察意见范文
2015/06/02 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书