PHP中的'flock'有什么用

What is the use of 'flock' in PHP

我在 Codeigniter 3 上工作了一个月,我想制作自己的日志记录应用程序,记录用户的输入及其在 website.So 上的操作我深入研究了与登录 codeigniter 和他们我发现了一个函数 'flock' 让我很好奇。我试图在官方 php 文档网站上阅读它,但没有找到任何令人满意的解释。如果有人可以帮助我解决这个问题,比如我们为什么使用它以及这个功能的实际实现和用例是什么,那对我来说将是一个很大的帮助..!!

谢谢..!!

在 PHP 中使用文件系统时的一个问题是,在您开始使用 fopen 处理文件后,一个或多个脚本仍然可能更新同一文件,

这可能会导致几个问题,想想如果同一个文件同时更新。

PHP 中的 flock() 函数会在文件打开后锁定文件以避免此问题。它还 returns 一个布尔值,取决于锁定是否成功。

flock() 也使用不同的标志来设置函数必须如何工作, 他们是:

  • LOCK_SH获取共享锁(reader)。
  • LOCK_EX 获取独占锁(writer)。
  • LOCK_UN 释放锁(共享或独占)。

举个例子,希望对理解有帮助:

$fp = fopen("/tmp/lock.txt", "r+");

if (flock($fp, LOCK_EX)) {  // acquire an exclusive lock
   // update the file
} else {
    echo "Couldn't get the lock!";
}

fclose($fp);

more info in this post