在 PHP 中读取文件时我应该使用 flock 吗?

Should I use flock when reading a file in PHP?

提问人:Josh Mayer 提问时间:11/16/2014 更新时间:11/16/2014 访问量:614

问:

好的,所以我是PHP的新手,书中的例子表明,当我在php中写入文件时,我应该在打开文件后使用flock($fp, LOCK_EX),然后在关闭文件之前使用flock($fp, LOCK_UN)。喜欢这个:

$fp = fopen("$DOCUMENT_ROOT/order.txt", 'ab');
flock($fp, LOCK_EX);
fwrite($fp, $outputstring, strlent($outputstring));
flock ($fp, LOCK_UN);
fclose($fp);

但是在另一个如何读取文件的例子中,我不确定作者是否忘记放置 flock() 或者读取文件时没有必要放置 flock()。示例如下:

$fp = fopen("$DOCUMENT_ROOT/order.txt", 'rb');
while (!feof($fp))
{
   $order = fgets($fp, 999)
   echo $order."<br/>";
}
fclose($fp);

那么我应该把flock()放在第二个例子中吗?

先谢谢你。

php fopen flock fclose feof

评论


答:

2赞 DanielGibbs 11/16/2014 #1

只有当有多个进程同时访问该文件时,才需要使用它。flock

如果写入文件的代码在任何时候都只有一个副本运行,那么您可能不需要使用 .但是,如果多个进程可能尝试同时运行代码(从而访问文件),则应确保它们一次运行一个。flockflock