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&&mysql)二
Oct 09 PHP
用来给图片加水印的PHP类
Apr 09 PHP
PHP实现MySQL更新记录的代码
Jun 07 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
php获取访问者IP地址汇总
Apr 24 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP调用其他文件中的类
Apr 02 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 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数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
经典婚礼主持开场白
2014/03/13 职场文书
三好学生事迹材料
2014/12/24 职场文书
换届选举主持词
2015/07/03 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
利用Python+OpenCV三步去除水印
2021/05/28 Python
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS