file() 读取文件时是否锁定文件?

发布于 2024-10-14 12:53:20 字数 115 浏览 2 评论 0原文

我正在使用 file() 来读取文件,例如带有选项卡的数组。我想锁定文件,但我似乎无法让集群()处理该文件。可以这样做吗?如果是这样,怎么办?如果不是, file() 是否从一开始就锁定文件并缓解任何潜在的共享问题?

I'm using file() to read through a file like an array with tabs. I want to lock the file but I cannot seem to get flock() working on the file. Is it possible to do this? If so, how? If not, does the file() lock the file from the start and alleviate any potential sharing problems?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

渡你暖光 2024-10-21 12:53:20

根据文档(特别是评论),它不会读取通过flock锁定的文件。

您有 2 个选择。

  1. 使用fgets读取文件(不检查错误):

    $f = fopen($file, 'r');
    羊群($f,LOCK_SH);
    $数据=数组();
    while ($row = fgets($f)) {
        $数据[] = $行;
    }
    羊群($f,LOCK_UN);
    fclose($f);
    
  2. 使用file()读取文件并使用单独的“lockfile”:

    $f = fopen($file . '.lock', 'w');
    羊群($f,LOCK_SH);
    $数据=文件($文件);
    羊群($f,LOCK_UN);
    fclose($f);
    取消链接($file . '.lock');
    

According to the documentation (specifically the comments), it won't read a file that was locked via flock.

You have 2 alternatives.

  1. Read the file with fgets (without checks for errors):

    $f = fopen($file, 'r');
    flock($f, LOCK_SH);
    $data = array();
    while ($row = fgets($f)) {
        $data[] = $row;
    }
    flock($f, LOCK_UN);
    fclose($f);
    
  2. Read the file with file() and using a separate "lockfile":

    $f = fopen($file . '.lock', 'w');
    flock($f, LOCK_SH);
    $data = file($file);
    flock($f, LOCK_UN);
    fclose($f);
    unlink($file . '.lock');
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文