【问题标题】:Do scripts that try to read a file locked with file_put_contents and LOCK_EX wait or fail?尝试读取被 file_put_contents 和 LOCK_EX 锁定的文件的脚本是等待还是失败?
【发布时间】:2013-12-16 18:38:27
【问题描述】:

一个简单的问题。尝试读取使用file_put_contents 锁定的文件并使用LOCK_EX 的脚本是等到文件解锁还是读取失败并继续?

【问题讨论】:

  • @chiliNUT 我需要一个巨大的文件来尝试它,或者不是吗?
  • dd if=/dev/zero of=output.dat bs=1M count=10 创建一个 1M x 10 = 10MB 的文件,根据需要创建一个文件并使用它
  • @mario 接受答案的作者说So since file_get_contents() utilizes it [flock()], I'd assume it's the same。这是一个假设,即使它确实使用flock(),他也不确定它是否使用LOCK_NB(不管出于何种原因,他都在谈论file_get_contents,而我的问题涉及用@锁定文件987654330@ 和一般读取此类文件)。
  • should LOCK_EX on both read & write be atomic?有更详细的答案。它仍然不是权威答案(但我宁愿看到在那里添加新答案而不是新的重复)。顺便说一句,不管底层实现如何,至少应该等待

标签: php multithreading file


【解决方案1】:

来自 file_put_contents 手册页,here

此函数返回写入到 文件,或 FALSE 失败。

...所以,这将在脚本运行后立即发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多