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 相关文章推荐
基于mysql的论坛(6)
Oct 09 PHP
php header Content-Type类型小结
Jul 03 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
PHP在线打包下载功能示例
Oct 15 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
Smarty3配置及入门语法
Feb 22 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP实现登录验证码校验功能
May 17 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
Laravel 前端资源配置教程
Oct 18 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
asp 的 分词实现代码
2007/05/24 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
Python中的super用法详解
2015/05/28 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Pytorch之finetune使用详解
2020/01/18 Python
python能做哪方面的工作
2020/06/15 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
设置器与访问器的定义以及各自特点
2016/01/08 面试题
拾金不昧的表扬信
2014/01/16 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
地道战观后感500字
2015/06/04 职场文书
安全生产会议制度
2015/08/06 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python