基本上我有一个XML文件来填充数据,我将有一个cron(PHP中的 )每5分钟更新一次。但与此同时,我会让用户一直访问这个文件(我说的是成千上万的用户)。
当我自己尝试编写脚本时,在.txt文件中写入200万条文本行并同时读取它,当然file_get_contents()
获取.txt文件中的当前文本并且不等待它结束并在完成后获取内容。所以我做的是,我写一个临时文件,然后将其重命名为原始的.txt文件。我的电脑上的重命名过程需要0.003秒(使用microtime()
计算)。
您认为这是一个合适的解决方案还是会有用户最终会出现文件不存在的错误?
答案 0 :(得分:2)
当然这不合适..你必须在0.003微秒内锁定文件。
一种非常简单的方法是标志
例如,创建名为isReplacing
的文件更换完成后,删除文件isReplacing
当用户希望文件在getfile.php
while(file_exists("isReplacing"))
{}
//NOW echo file_get_contents()
//BETTER:
if(file_exists("isReplacing"))
{
//GET DATA FROM DATABASE
}
else
{
//ECHO THE FILE
}
注意这是一种愚蠢的方式,但我只想展示