如果我文件正在被file_put_contents()
处理时该怎么办。该文件是否会获取文件的过去内容或尚未完成写入的当前内容?文件处理问题
文件处理问题
回答
file_get_contents()
将读取不完整的文件,因为file_put_contents()
写入缓冲的文件。特别是对于大文件,您将会产生这种效果。
编辑:注意(因为它在其他评论想出了):
你可以用LOCK_EX标志申请锁定。
file_put_contents ($filename, $content, LOCK_EX);
$content = file_get_contents ($filename, LOCK_EX);
是非常小的文件将被原子地写入。但总的来说,这些功能不是原子的。 –
如果一个进程试图访问而另一个写该文件时,一个读数将被锁定,直到写操作完成 - 这是如果你使用基于文件的会话,并有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
。
这是错误的。没有适用于file_get_contents/file_put_contents的锁定。 –
@KenyakornKetsombut需要引用 – Yang
@djay检查文档http://au1.php.net/file_put_contents并寻找LOCK_EX –
- 1. C文件处理问题
- 2. 文件处理问题
- 3. c#文件处理问题
- 4. C++文件处理问题
- 5. Perl文件处理问题?
- 6. 批处理文件问题
- 7. 批处理文件 - 换行符问题
- 8. 批处理文件SET变量问题
- 9. seek()在文件处理中的问题
- 10. 问题从一个批处理文件
- 11. 问题从一个批处理文件
- 12. 批处理文件替换问题
- 13. FOR批处理文件问题循环
- 14. 批处理文件ERRORLEVEL问题
- 15. 处理XML文件的问题
- 16. 批处理文件编码问题
- 17. 简单的批处理文件问题
- 18. 一些批处理文件问题
- 19. 批处理文件的问题
- 20. Spring 3.0处理文件上传问题
- 21. C文件处理/结构问题
- 22. 批处理文件调用Java问题
- 23. 批处理文件的问题
- 24. 问题,在我的批处理文件
- 25. 问题处理文件I/O与libevent2
- 26. 批处理文件循环问题
- 27. 批处理文件参数问题
- 28. Rails 3表单文件处理问题
- 29. 64位NASM文件处理问题
- 30. 关于文件处理的问题
你是什么意思与“而”?并发进程/线程或...? – DonCallisto