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 相关文章推荐
smarty的保留变量问题
Oct 23 PHP
PHP 加密与解密的斗争
Apr 17 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
php中JSON的使用方法
Apr 30 PHP
php中删除、清空session的方式总结
Oct 09 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
如何解决php-fpm启动不了问题
Nov 17 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获取windows登录用户名的方法
2014/06/24 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
<script defer> defer 是什么意思
2009/05/10 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
详解python中requirements.txt的一切
2017/03/03 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
银行出纳岗位职责
2013/11/25 职场文书
个人党性分析总结
2015/03/05 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
MySQL自定义函数及触发器
2022/08/05 MySQL