加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP flock():文件锁

发布时间:2020-12-13 17:59:20 所属栏目:PHP教程 来源:网络整理
导读:文件锁,顾名思义就是对文件上锁。前面我们在介绍《向文件中写入数据》时,同一时刻只有一个单独的用户在操作文件,这样是没有问题的。但是如果两个或者更多用户同时操作同一文件的话,程序就会出现错误。解决这种问题的方法就是,在使用 PHP 向文件中写入时
文件锁,顾名思义就是对文件上锁。前面我们在介绍《向文件中写入数据》时,同一时刻只有一个单独的用户在操作文件,这样是没有问题的。但是如果两个或者更多用户同时操作同一文件的话,程序就会出现错误。解决这种问题的方法就是,在使用 PHP 向文件中写入时,暂时锁定该文件。

通过学习《file_put_contents() 函数》我们知道,可以通过在 file_put_contents() 函数的第三个参数中设置“LOCK_EX”来为文件加锁。但如果我们使用 fopen()、fwrite()、fclose() 等函数来操作文件的话,就需要在打开文件之后使用 flock() 函数来为文件加锁了。

flock() 函数的语法格式如下:

flock(resource $handle,int $operation[,int &$wouldblock])

参数说明如下:
  • $handle:文件系统指针,即使用 fopen() 创建的文件资源;
  • $operation:文件锁类型,可以是以下值之一:
    • LOCK_SH 取得共享锁定(读取的程序);
    • LOCK_EX 取得独占锁定(写入的程序);
    • LOCK_UN 释放锁定(无论共享或独占);
    • 如果不希望 flock() 在锁定时堵塞,则可以在 $operation 中添加 LOCK_NB 参数(Windows 上还不支持)。
  • $wouldblock:可选参数,如果希望文件锁定时堵塞其它进程,则可以将该参数设置为 1 或 true。(Windows 上不支持)

提示:使用 flock() 函数不仅可以为文件加锁,好可以解锁文件。

【示例】使用 flock() 函数为文件加锁。
<?php
    $file = fopen('./test.txt','w+');

    if(flock($file,LOCK_EX|LOCK_NB)){
        fwrite($file,'C语言中文网'.date('Y-m-d H:i:s',time()));
        flock($file,LOCK_UN);
    }else{
        echo "string";
    }
    fclose($file);
?>

提示:如果使用了 flock() 函数对文件进行了加锁操作,那么当调用 fclose() 函数时,文件会自动解锁,但最好还是在文件写入完成后加上解锁语句。?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读