Какие-либо моменты, чтобы использовать еще в блокировке файла? - PullRequest
0 голосов
/ 09 октября 2018

Видел несколько примеров скриптов с написанием php-файла, где они блокировали файл с помощью оператора if.Я не нашел никаких примеров того, что я должен написать в другом.Я использую это для создания простых файлов журнала TXT и не хочу печатать что-либо для пользователя, если это не удается.Могу ли я пропустить if / else или что я должен иметь в else?

$fh = fopen($logFile, 'w');
if (flock($fh, LOCK_EX)) {
    foreach($datecounts as $datecount)
    {
        fwrite($fh, $datecount.PHP_EOL);
    }
    flock($fh, LOCK_UN);
}
else
{
    //couldn't lock.
}
fclose($fh);

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

, если вы не хотите ничего делать, просто закройте его.

 flock($fh, LOCK_UN);

, чтобы при следующей попытке это не создавало для вас проблемы.

0 голосов
/ 09 октября 2018

не хочет печатать что-либо для пользователя, если оно выходит из строя ...

Так что же делать вы хотите сделать, если он выходит из строя?

Или, другими словами, каковы последствия сбоя?

Похоже, вы пишете файл журнала, и если он не может заблокировать файл, вы просто хотите молча потерпеть неудачу.Это означает, что вы не получите ни логов, ни каких-либо указаний на то, что ведение логов не происходит.

Если ведение логов важно для вас, то это не очень хорошо.Но если вы довольны этой ситуацией, тогда вы правы;в предложении else нет необходимости.

Но вы также должны учитывать, что означает сбой блокировки файла.Это может означать, что у вас есть проблема с правами доступа к файлу или что кто-то еще открыл ее, или, возможно, диск переполнен или даже ошибка диска.Возможно, вам все равно, что файл журнала не записывается, но любая из этих проблем может привести к ухудшению ситуации в вашей программе позже, и раннее сообщение об этом может спасти вас от этого.

0 голосов
/ 09 октября 2018

конечно, вы можете пропустить это.Но вы также можете использовать его в целях отладки (например, запись в журнал в случае ошибок)

...