有没有其他要在文件锁定中使用的点?

时间:2018-10-09 11:40:46

标签: php file-locking

已经看到了几个编写php文件的脚本示例,它们使用if语句锁定了文件。我还没有找到其他应该写的例子。我使用它来创建简单的txt日志文件,并且如果失败则不希望将任何内容打印给用户。我是否可以跳过if / 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 :(得分:0)

当然,您可以跳过它。但是您也可以将其用于调试目的(例如在发生错误的情况下进行记录)

答案 1 :(得分:0)

如果您不想执行任何操作,只需将其关闭。

 flock($fh, LOCK_UN);

以便下次尝试时不会为您带来麻烦。

答案 2 :(得分:0)

  

如果失败,则不想将任何内容打印给用户...

那么如果失败了该怎么办?

或者换句话说,失败意味着什么?

您似乎正在写一个日志文件,如果它不能锁定该文件,则您只想静默失败。这意味着您将不会获得日志,也不会表示没有日志记录。

如果日志记录对您很重要,那么这不是很好。但是,如果您对这种情况感到满意,那么您是对的。不需要else子句。

但是您还应该考虑锁定文件失败的含义。这可能意味着您在文件权限方面存在问题,或者其他人已将其打开,或者可能是磁盘已满甚至是磁盘错误。您可能并不在乎日志文件没有被写入,但是这些问题中的任何一个都可能导致程序稍后出现更糟的情况,而尽早报告可以避免这种情况。