Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 读取时file()是否锁定文件?_Php_File_Flock - Fatal编程技术网

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

Php 读取时file()是否锁定文件?,php,file,flock,Php,File,Flock,我使用file()来读取一个文件,就像一个带标签的数组。我想锁定该文件,但我似乎无法让flock()处理该文件。有可能这样做吗?如果是,怎么做?如果没有,file()是否从一开始就锁定文件并缓解任何潜在的共享问题?根据(特别是注释),它不会读取通过flock锁定的文件 你有两个选择 使用fgets读取文件(不检查错误): 使用file()并使用单独的“锁定文件”读取文件: 您能否提供一个代码示例来描述您希望在这里实现的目标?您使用什么文件系统? $f = fopen($file, 'r');

我使用file()来读取一个文件,就像一个带标签的数组。我想锁定该文件,但我似乎无法让flock()处理该文件。有可能这样做吗?如果是,怎么做?如果没有,file()是否从一开始就锁定文件并缓解任何潜在的共享问题?

根据(特别是注释),它不会读取通过
flock
锁定的文件

你有两个选择

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

  • 使用
    file()
    并使用单独的“锁定文件”读取文件:


  • 您能否提供一个代码示例来描述您希望在这里实现的目标?您使用什么文件系统?
    $f = fopen($file, 'r');
    flock($f, LOCK_SH);
    $data = array();
    while ($row = fgets($f)) {
        $data[] = $row;
    }
    flock($f, LOCK_UN);
    fclose($f);
    
    $f = fopen($file . '.lock', 'w');
    flock($f, LOCK_SH);
    $data = file($file);
    flock($f, LOCK_UN);
    fclose($f);
    unlink($file . '.lock');