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的错误信息
Oct 09 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
怎样搭建PHP开发环境
Jul 28 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
php实现的数组转xml案例分析
Sep 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP 图片处理
2020/09/16 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python在非root权限下的安装方法
2018/01/23 Python
Python语言的变量认识及操作方法
2018/02/11 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
python输出带颜色字体实例方法
2019/09/01 Python
python str字符串转uuid实例
2020/03/03 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
大学生家政服务项目创业计划书
2014/01/30 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
Python实现简繁体转换
2021/06/07 Python
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python