如果我文件正在被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