在PHP的使用过程中,我们经常需要对文件进行读取,但是为了防止其他进程对文件进行读取修改,避免冲突的发生,我们必须在文件读取时将文件锁定,然后对文件进行修改,直到完成操作,在这个过程中使用的是flock()
函数,本文就带大家一起了解以下。首次,我们来看一看block()
函数的语法:
flock( resource $handle, int $operation, int $wouldblock = ?)
$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视频教程》
原文地址:https://www.jb51.cc/php/1210154.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。