简单谈谈 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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
分享下php5类中三种数据类型的区别
Jan 26 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP 9 大缓存技术总结
Sep 17 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 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
图书管理程序(二)
2006/10/09 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
原生js实现日期联动
2015/01/12 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
js实现二级导航功能
2017/03/03 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
python3 flask实现文件上传功能
2020/03/20 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
党员实事承诺书
2014/03/26 职场文书
本科应届生自荐信
2014/06/29 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书