简单谈谈 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文本数据库的搜索方法
Oct 09 PHP
php 结果集的分页实现代码
Mar 10 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
学习PHP的数组总结【经验】
May 05 PHP
php微信高级接口群发 多客服
Jun 23 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 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手册及PHP编程标准
2006/12/17 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python学生信息管理系统(初级版)
2018/10/17 Python
python实现动态创建类的方法分析
2019/06/25 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
岗位职责的含义
2013/11/17 职场文书
中央空调节能方案
2014/06/15 职场文书
岗位说明书怎么写
2014/07/30 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
先进班集体事迹材料
2014/12/25 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
门店店长岗位职责
2015/04/14 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书