简单谈谈 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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
php获取mysql版本的几种方法小结
Mar 25 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
php使用session二维数组实例
Nov 06 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
PHP的new static和new self的区别与使用
Nov 27 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
基于initPHP的框架介绍
2013/04/18 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Django中的ajax请求
2018/10/19 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
pymysql模块使用简介与示例
2020/11/17 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
外企财务年会演讲稿
2014/01/03 职场文书
继承公证书样本
2014/04/04 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
合作协议书格式范本
2016/03/21 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL