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