代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

文件上互相排斥的标志放在内容上?

  •  3
  • Alix Axel  · 技术社区  · 15 年前

    file_put_contents (一)文件,内容如下:

    文件添加 :

    自起与Lock_Ex互斥 附录是原子的,因此 没有理由上锁。

    洛克塞克斯 :

    与文件附加互斥。

    不过,下面几行代码如下:

    <?php
    $file = 'people.txt';
    // The new person to add to the file
    $person = "John Smith\n";
    // Write the contents to the file, 
    // using the FILE_APPEND flag to append the content to the end of the file
    // and the LOCK_EX flag to prevent anyone else writing to the file at the same time
    file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
    ?>
    

    那么,文件附加和锁定标记是否互斥?如果是,为什么在示例中使用它?这是一个坏文件的案例吗?

    谢谢你的意见!

    2 回复  |  直到 13 年前
        1
  •  3
  •   karim79    15 年前

    那只是糟糕的文件。这个 manual clearly states :

    FILE_APPEND :如果文件名 已经存在,将数据附加到 文件而不是覆盖它。 自起与Lock_Ex互斥 附录是原子的,因此 没有理由上锁。

    LOCK_EX :获取独占锁 在文件上继续 写作。与…相互排斥 文件附加。

    你提到的例子是:

    <?php
    $file = 'people.txt';
    // The new person to add to the file
    $person = "John Smith\n";
    // Write the contents to the file, 
    // using the FILE_APPEND flag to append the content to the end of the file
    // and the LOCK_EX flag to prevent anyone else writing to the file at the same time
    file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
    ?>
    

    似乎编写示例的人误解了“互斥”的含义, 这就产生了一些秘密的,未经记载的巴哈马语。

        2
  •  4
  •   Community nesinervink    7 年前

    喜欢 @karim79 said ,这是手册中的错误:请参阅 bug #49329 ,我在看到这个问题/答案后报告,几分钟前已经纠正/关闭。

    (需要一段时间才能反映在手册的在线版本中,但在其来源中已对AHS进行了更正)