PHP文件锁函数flock()详细介绍

yipeiwu_com7年前PHP代码库

文件操作系统是在网络环境下完成的,可能有多个客户端用户在同一个时刻对服务器上的同一个文件访问。当这种并发访问产生时,很可能会破坏文件中。例如一个用户正在向文件中写入数据,当还没有写完时,其他用户在这一时刻也向这个文件中写数据,就会造成数据写入混乱。还有,当用户没有将数据写完时,其他用户就去获取这个文件中的内容,也会得到残缺的数据。

在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代码中使用换行及(\n或\r\n和br)的应用

代码a: 复制代码 代码如下: <?php echo'hello</br>'; echo'world!'; ?> output: helllo world! 代...

PHP.ini安全配置检测工具pcc简单介绍

PHP.ini安全配置检测工具pcc简单介绍

概述 前一段时间,在工作中遇到了一个开源程序,该程序主要用来检测PHP配置文件中得配置项是否存在安全隐患,并提出相应的配置建议,使PHP程序更加安全。 使用 这个程序使用起来非常简单,大...

扩展你的 PHP 之入门篇

扩展你的 PHP 之入门篇

扩展你的php 扩展你的php 扩展的3种方式 extension dll方式的扩展 小结   首先注意,以下所有的一切皆在 win 下进行,使用的工具的 VC++6.0。 扩展...

PHP中使用asort进行中文排序失效的问题处理

PHP中有非常方便的对数组进行重新排序的方法——asort,关于asort的使用方法可以看 这里 。但是asort对含有中文key的数组进行排序时,有时候并不是按照字母顺序。这主要是编码...

phpQuery占用内存过多的处理方法

phpQuery是一个用php实现的类似jQuery的开源项目,可以在服务器端以jQuery的语法形式解析网页元素。 相对于正则或其它方式匹配网页方式,phpQuery使用起来要方便的多...