两个用户同时写入文件? (PHP / file_put_contents)

时间:2011-01-13 16:36:43

标签: php flags

如果我通过设置file_put_contents标志的FILE_APPEND将数据写入文件,并且两个用户同时提交数据,那么它是否会附加,或者是否有可能会覆盖一个条目?

如果我设置LOCK_EX标志,第二次提交是否会等待第一次提交完成,或者当无法获得排他锁时数据是否丢失?

PHP通常如何处理?我正在运行5.2.9版。如果重要的话。

谢谢, 莱恩

2 个答案:

答案 0 :(得分:2)

你也可以检查flock函数来实现正确的锁定(不是基于while / sleep技巧)

答案 1 :(得分:1)

如果通过LOCK_EX设置独占文件锁,则尝试写入的第二个脚本(按时间顺序)将从file_put_contents返回false。

即:它不会等待文件可用于写入。

因此,如果需要,您需要自己编写此行为,可能是尝试使用file_put_contents 有限次数(例如:3),其使用大小合适{每次尝试之间{3}}。