概述
在PHP的使用过程中,我们经常需要对文件进行读取,但是为了防止其他进程对文件进行读取修改,避免冲突的发生,我们必须在文件读取时将文件锁定,然后对文件进行修改,直到完成操作,在这个过程中使用的是flock()
函数,本文就带大家一起了解以下。首次,我们来看一看block()
函数的语法:
flock( resource $handle, int $operation, int $wouldblock = ?)
登录后复制
$handle:文件系统指针,是典型地由
fopen()
创建的resource
(资源)。$operation:
LOCK_SH
取得共享锁定(读取的程序)。LOCK_EX
取得独占锁定(写入的程序。LOCK_UN
释放锁定(无论共享或独占)。如果不希望flock()
在锁定时堵塞,则是LOCK_NB
(Windows 上还不支持)。$wouldblock:如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),可选的第三个参数会被设置为
true
。(Windows 上不支持)返回值:成功时返回
true
, 或者在失败时返回false
。
代码实例:
1.使用LOCK_EX
<?php
$fp = fopen("exit.txt", "r+");
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
ftruncate($fp, 0); // truncate file
fwrite($fp, "Write something here");
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't get the lock!";
}
fclose($fp);
?>
登录后复制
exit.text内容:Write something here
登录后复制
2.使用LOCK_NB
<?php
$fp = fopen('exit.txt', 'r+');
/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
echo 'Unable to obtain lock';
exit(-1);
}
fclose($fp);
?>
登录后复制
推荐:《2021年PHP面试题大汇总(收藏)》《php视频教程》
以上就是解析PHP中flock()函数(附代码实例)的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是开放手链为你收集整理的解析PHP中flock()函数(附代码实例)的全部内容,希望文章能够帮你解决解析PHP中flock()函数(附代码实例)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复