题
我正在使用file()来读取带有标签的数组之类的文件。我想锁定该文件,但似乎无法在文件上使用Flock()。是否有可能做到这一点?如果是这样,怎么样?如果不是,则文件()是否从开始时锁定文件并减轻任何潜在的共享问题?
解决方案
根据 文档 (特别是评论),它不会读取通过锁定的文件 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');
不隶属于 StackOverflow