file_get_contents()
处理文件时file_put_contents()
文件怎么办?文件是否会获取文件的过去内容或尚未完成写入的当前内容?
答案 0 :(得分:0)
file_get_contents()
将读取不完整的文件,因为file_put_contents()
写入缓冲的文件。特别是对于大文件,你会有这种效果。
修改:注意(因为它出现在另一条评论中):
您可以使用LOCK_EX标志来应用锁定。
file_put_contents ( $filename, $content, LOCK_EX );
$content = file_get_contents ( $filename, LOCK_EX );
答案 1 :(得分:-1)
如果一个进程尝试访问某个文件而另一个进程正在写入该文件,那么一个进程将被锁定,直到写入完成为止 - 这就是为什么如果您使用基于文件的会话并拥有如下所示的PHP文件:
// a.php:
session_start();
sleep(60);
// b.php:
session_start();
echo "Hi!";
然后,如果您在不同的浏览器标签中加载a
后跟b
,则b
将一直挂起,直到a
完成。这是因为a
已锁定会话文件,而b
正在等待锁定被释放。
这同样适用于file_get_contents
/ file_put_contents
。