2014-11-16 4 views
1

Итак, я новичок в PHP, и пример из книги показывает, что когда я пишу в файл в php, я должен использовать flock ($ fp, LOCK_EX) после открытия файла, а затем flock ($ fp, LOCK_UN) перед закрытием файл. Как это:Должен ли я использовать стайку при чтении файла на PHP?

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

Но в другом примере, как прочитать файл я не уверен, что если автор забыл поставить стадо() или не надо ставить паству() при чтении файла. Вот пример:

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

Должен ли я ставить flock() во втором примере или нет?

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

ответ

2

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

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

+0

Привет, Даниил, благодарю вас за помощь. Теперь я понимаю. –