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 相关文章推荐
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 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目录与文件操作
2011/12/30 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
Sea.JS知识总结
2016/05/05 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python实现单词拼写检查
2015/04/25 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
让python在hadoop上跑起来
2016/01/27 Python
使用python3实现操作串口详解
2019/01/01 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
小车司机岗位职责
2013/11/25 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
升学宴来宾致辞
2015/07/27 职场文书
初三英语教学反思
2016/02/15 职场文书
物业管理交接协议书
2016/03/24 职场文书