1

好的,所以我是 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() 放在第二个示例中?

先感谢您。

4

1 回答 1

2

flock只有在有多个进程同时访问文件时才需要使用。

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

于 2014-11-16T15:25:49.523 回答