当file_put_content同时写入同一文件时会发生什么?

时间:2014-07-15 13:05:48

标签: php

如果脚本设置为在页面加载时将文本保存到给定的.txt文件(file_put_contents),那么当2个用户在同一时间加载页面时会发生什么?

其中一个用户(或两者)是否收到错误? .txt文件是否会损坏?写入.txt文件的文本是否会被破坏? ...或?

我编写了一个缓存函数,用于从API获取内容并将其保存到.txt文件中。如果自上次提取新数据以来已超过3分钟,它会将新数据写入.txt文件。 (如果需要提取新数据,或者应该使用来自.txt文件的数据,它决定页面加载。)

这会没有问题吗?或者我有什么办法可以防止任何错误发生?

1 个答案:

答案 0 :(得分:0)

不会发生错误,但两个进程都会同时写入文件。 您需要使用LOCK_EX标志来确保一次只有一个进程写入文件:

if (false === file_put_contents('path/to/file', 'data', LOCK_EX)) {
    // Writing to the file failed
}