简单谈谈 php 文件锁


Posted in PHP onFebruary 19, 2017

锁机制之所以存在是因为并发导致的资源竞争,为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成串行状态。作为锁机制中的一种,PHP的文件锁也是为了应对资源竞争。假设一个应用场景,在存在较大并发的情况下,通过fwrite向文件尾部多次有序的写入数据,不加锁的情况下会发生什么?多次有序的写入操作相当于一个事务,我们此时需要保证这个事务的完整性。

如果我们有两个程序同时向某个文件中写入数据,为了保证数据的完整性,可以加一个文件锁,先让程序1执行,程序1执行完后,解锁,再让程序2执行。实现代码如下:

$fp = fopen('test.txt',"a");
$count = 10;
if (flock($fp, LOCK_EX)) {
for($i=1;$i<$count;$i++){
fwrite($fp, 'text2_'.$i."rn");
echo "test2".date('h:i:s') . "
";
sleep(1); 
echo "test2".date('h:i:s');
}
flock($fp , LOCK_UN);
}else{
echo "Couldn't lock the file !";
}
fclose($fp);
PHP 相关文章推荐
PHP二维数组的去重问题解析
Jul 17 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
php编写的一个E-mail验证类
Mar 25 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
PHP new static 和 new self详解
Feb 19 #PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 #PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 #PHP
PHP进程通信基础之信号
Feb 19 #PHP
PHP 信号管理知识整理汇总
Feb 19 #PHP
php 三大特点:封装,继承,多态
Feb 19 #PHP
PHP实现大数(浮点数)取余的方法
Feb 18 #PHP
You might like
PHP写日志的实现方法
2014/11/05 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
几行js代码实现自适应
2017/02/24 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python按照多个条件排序的方法
2019/02/08 Python
Python 实现自动导入缺失的库
2019/10/29 Python
python同时遍历两个list用法说明
2020/05/02 Python
查看keras的默认backend实现方式
2020/06/19 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
南京某公司笔试题
2013/01/27 面试题
入党积极分子思想汇报范文
2014/01/05 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
中学生逃课检讨书
2015/02/17 职场文书
妈妈别哭观后感
2015/06/08 职场文书
狂人日记读书笔记
2015/06/30 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
2019教师的学习计划
2019/06/25 职场文书
导游词之临安白水涧
2019/11/05 职场文书