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 visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
php实现的CSS更新类实例
Sep 22 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
详解PHP中的Traits
Jul 29 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
Prototype 工具函数 学习
2009/07/23 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
javascript的this关键字详解
2019/05/20 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python编写电话薄实现增删改查功能
2016/05/07 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
PyTorch实现AlexNet示例
2020/01/14 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
重构Python代码的六个实例
2020/11/25 Python
优秀学生干部个人的自我评价
2013/10/04 职场文书
中秋节慰问信
2015/02/15 职场文书
职工食堂管理制度
2015/08/06 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫