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 相关文章推荐
php5 pdo新改动加载注意事项
Sep 11 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
浅析PHP文件下载原理
Dec 25 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
php集成开发环境详解
Sep 24 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的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
xml转json的js代码
2012/08/28 Javascript
javascript实现yield的方法
2013/11/06 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
军训的自我鉴定
2013/12/10 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
质量保证书格式
2015/02/27 职场文书
党课主持词大全
2015/06/30 职场文书