简单谈谈 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
WHOIS类的修改版
Oct 09 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
php支付宝APP支付功能
Jul 29 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 PHP
thinkphp5使用无限极分类
Feb 18 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产生随机字符串函数
2006/12/06 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
类之Prototype.js学习
2007/06/13 Javascript
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python统计cpu利用率的方法
2015/06/02 Python
python 全文检索引擎详解
2017/04/25 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
党的群众路线学习材料
2014/05/16 职场文书
优秀求职信
2014/05/29 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
经理助理岗位职责
2015/02/02 职场文书
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫