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实现的生成静态HTML速度快类库
Mar 31 PHP
PHP 变量类型的强制转换
Oct 23 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
php中的观察者模式简单实例
Jan 20 PHP
基础的WordPress插件制作教程
Nov 24 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
php实现微信支付之退款功能
May 30 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邮件发送,php发送邮件的类
2011/03/24 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JS控制表单提交的方法
2015/07/09 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
Python实现Const详解
2015/01/27 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
乔迁宴答谢词
2014/01/21 职场文书
小学端午节活动方案
2014/03/13 职场文书
物理学专业自荐信
2014/06/11 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
网吧员工管理制度
2015/08/05 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
SQL Server Agent 服务无法启动
2022/04/20 SQL Server
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers