简单谈谈 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操作文件方法问答
Mar 16 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
详解PHP中的PDO类
Jul 06 PHP
Centos6.5和Centos7 php环境搭建方法
May 27 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
关于php开启错误提示的总结
Sep 24 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 foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
php常用hash加密函数
2014/11/22 PHP
php自动加载代码实例详解
2021/02/26 PHP
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
谈谈Python中的while循环语句
2019/03/10 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
python多线程与多进程及其区别详解
2019/08/08 Python
opencv python图像梯度实例详解
2020/02/04 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
高一政治教学反思
2014/01/28 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
驾驶员安全责任书
2014/07/22 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
婚内房产协议书范本
2014/10/02 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
python之django路由和视图案例教程
2021/07/26 Python