简单谈谈 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 数组的创建、调用和更新实现代码
Mar 09 PHP
PHP 可阅读随机字符串代码
May 26 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
一个简单且很好用的php分页类
Oct 26 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP生成随机密码类分享
Jun 25 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
PHP基于socket实现客户端和服务端通讯功能
Jul 13 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 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使用类继承解决代码重复的问题
2015/02/11 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
php截取视频指定帧为图片
2016/05/16 PHP
thinkphp分页集成实例
2017/07/24 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python引用计数操作示例
2018/08/23 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
Python的缺点和劣势分析
2019/11/19 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
垃圾回收的优点和原理
2014/05/16 面试题
旅游管理专业大学生职业规划书
2014/02/27 职场文书
信息技术培训感言
2014/03/06 职场文书
社会实践的活动方案
2014/08/22 职场文书
领导工作表现评语
2015/01/04 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
化验室安全管理制度
2015/08/06 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS