执行尝试读取被file_put_contents锁定的文件的脚本,LOCK_EX等待或失败


Do scripts that try to read a file locked with file_put_contents and LOCK_EX wait or fail?

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

简单的答案是它们不会阻止而是失败。Groovepig 的答案是正确的,但冗长到模棱两可的地步,马里奥的评论是这个线程中最有用的"答案"。

如果J lock_ex打开FILE.TXT,则K将收到一个错误消息表单file_put_contents直到J解锁文件,例如,通过完成由J执行的锁定file_put_contents调用。

在此之后,K 将能够file_put_contents文件。

作为对那些质疑锁定追加操作有效性的人的回应,虽然追加可能很快,但如果 K 写入 FILE.TXT当 J 的解锁写入操作已启动时,行为是未定义的,但有可能是 J 的追加不会被附加,可能以错误的顺序附加,或者 K 的 ftell 可能导致 Ks 写在 J 刚刚写的内容中间被

撞。

追加速度很快,发生冲突的可能性要小得多,但它们仍然可能发生,这可能意味着数据有意义的文件和数据是 gobbledygook 的文件之间的差异。

从file_put_contents手册页,这里

此函数返回写入 文件,或在失败时为 FALSE。

。因此,这将在脚本运行后立即发生。