简单谈谈 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中cookies使用指南
Mar 16 PHP
PHP分页显示制作详细讲解
Nov 19 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP调用Webservice实例代码
Jul 29 PHP
php读取mysql的简单实例
Jan 15 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP时间相关常用函数用法示例
Jun 03 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中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
python列表与元组详解实例
2013/11/01 Python
python中cPickle用法例子分享
2014/01/03 Python
Python pickle模块用法实例
2015/04/14 Python
Python中list初始化方法示例
2016/09/18 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
python安装scipy的步骤解析
2019/09/28 Python
python实时监控logstash日志代码
2020/04/27 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
党校学习思想汇报
2014/01/06 职场文书
经销商年会策划方案
2014/05/29 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
实习单位鉴定意见
2015/06/04 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
SQL CASE 表达式的具体使用
2022/03/21 SQL Server
MySQL视图概念以及相关应用
2022/04/19 MySQL