PHP文件锁函数flock()详细介绍


Posted in PHP onNovember 18, 2014

文件操作系统是在网络环境下完成的,可能有多个客户端用户在同一个时刻对服务器上的同一个文件访问。当这种并发访问产生时,很可能会破坏文件中。例如一个用户正在向文件中写入数据,当还没有写完时,其他用户在这一时刻也向这个文件中写数据,就会造成数据写入混乱。还有,当用户没有将数据写完时,其他用户就去获取这个文件中的内容,也会得到残缺的数据。

在PHP中提供了flock()函数,可以对文件使用锁定机制(锁定或释放文件)。当一个进程在访问文件时加上锁,其他进程要想对该文件进行访问,则必须等到锁定被释放以后。这样就可以避免在并发访问同一个文件时破坏数据。该函数的原型如下:

bool flock(int handle,int operation[,int&wouldblock])             //轻便的咨询文件锁定

第一个参数handle必须是一个已经打开的文件资源,第二个参数opeation也是必需的,规定使用哪种类型。operation可以是以下值之一:
★LOCK_SH取得共享锁定(从文件中读取数据时使用)。
★LOCK_EX取得独占锁定(向文件中写入数据时使用)。
★LOCK_UN释放锁定(无论共享或独占锁,都用它释放)。
★LOCK_NB附加锁定(如果不希望flock()在锁定时堵塞,则应在上述锁定后加上该锁)。

如果锁定会堵塞的话(已经被flock()锁定的文件,再次锁定时,flock()函数会被挂起,这时成为锁定堵塞),也可以将可选的第三个参数设定为1,则当进行锁定时会阻挡其他进程。锁定操作也可以被fclose()释放。为了让flock()函数发挥作用,在所有访问文件的程序中都必须使用相同的方式锁定文件。该函数如果成功则返回TRUE,失败则返回FALSE。

PHP 相关文章推荐
PHP的FTP学习(二)
Oct 09 PHP
动态生成gif格式的图像要注意?
Oct 09 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
浅析iis7.5安装配置php环境
May 10 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
php简单统计在线人数的方法
May 10 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 #PHP
PHP操作文件的一些基本函数使用示例
Nov 18 #PHP
一个经典的PHP文件上传类分享
Nov 18 #PHP
php数组查找函数总结
Nov 18 #PHP
一个经典的PHP验证码类分享
Nov 18 #PHP
一个经典实用的PHP图像处理类分享
Nov 18 #PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 #PHP
You might like
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python根据出生日期获得年龄的方法
2015/03/31 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python实现调度算法代码详解
2017/12/01 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2014年工程部工作总结
2014/11/25 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
材料员岗位职责
2015/02/10 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android