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 相关文章推荐
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 PHP
PHP命名空间用法实例分析
Sep 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
python+Django+apache的配置方法详解
2016/06/01 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python----数据预处理代码实例
2019/03/20 Python
python适合做数据挖掘吗
2020/06/16 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
业务员岗位职责范本
2013/12/15 职场文书
元旦晚会主持词
2014/03/24 职场文书
项目经理聘任书
2014/03/29 职场文书
《花木兰》教学反思
2014/04/09 职场文书
优秀班主任材料
2014/12/16 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
如何在C++中调用Python
2021/05/21 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js