我正在使用 file() 来读取文件,例如带有标签的数组。我想锁定文件,但我似乎无法让 flock() 处理该文件。是否有可能做到这一点?如果是这样,怎么做?如果不是,file() 是否从一开始就锁定文件并缓解任何潜在的共享问题?
问问题
2263 次
1 回答
4
根据文档(特别是注释),它不会读取通过flock
.
你有 2 个选择。
读取文件
fgets
(不检查错误):$f = fopen($file, 'r'); flock($f, LOCK_SH); $data = array(); while ($row = fgets($f)) { $data[] = $row; } flock($f, LOCK_UN); fclose($f);
file()
使用单独的“lockfile”读取文件:$f = fopen($file . '.lock', 'w'); flock($f, LOCK_SH); $data = file($file); flock($f, LOCK_UN); fclose($f); unlink($file . '.lock');
于 2011-01-25T02:03:15.013 回答