Должен ли я использовать flock при чтении файла в PHP?

Итак, я новичок в 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() во втором примере или нет?

Заранее спасибо.


person Josh Mayer    schedule 16.11.2014    source источник


Ответы (1)


Необходимо использовать flock только в том случае, если к файлу одновременно будут обращаться несколько процессов.

Если код, который записывает в файл, будет иметь только одну копию в любой момент времени, то вам, вероятно, не нужно использовать flock. Однако, если возможно, что несколько процессов могут попытаться запустить код (и, следовательно, получить доступ к файлу) одновременно, вам следует использовать flock, чтобы убедиться, что они делают это по одному.

person DanielGibbs    schedule 16.11.2014