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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
php入门教程 精简版
Dec 13 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
php实现商城购物车的思路和源码分析
Jul 23 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+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP培训要多少钱
2017/06/06 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
Vue数据绑定简析小结
2019/05/07 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python利用tkinter实现屏保
2019/07/30 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python类及获取对象属性方法解析
2020/06/15 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
体育专业个人求职信范文
2013/12/27 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
校长新学期致辞
2015/07/30 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python