回答
您應該在兩個腳本中使用flock
。這會在文件上放置一個標誌,以便通知其他腳本文件正在使用中。該標誌有意使用fclose
或在腳本末尾隱式關閉。
雖然flock是答案(或`dio_fcntl`),flock只提供一個*諮詢*鎖定。你必須在任何地方與羊羣協調**。任何其他不使用flock的腳本都可以隨時操作該文件。 – jasonbar 2011-01-09 16:06:18
@jasonbar因此通過「在兩個腳本」。在您的第一條評論之後,我已經更新了我的答案,以反映您的出色觀點。 – lonesomeday 2011-01-09 16:07:06
我想說的只是使用文件打開功能,如果它返回false,那麼文件顯然仍然是打開的。
您可以根據需要隨意調用同一文件中的fopen()多次, 。 – jasonbar 2011-01-09 16:06:58
如果您使用的是Unix,您的系統可能安裝了lsof(「LiSt打開文件」)命令。 輸出中的「FD」列指示文件是打開讀取, 寫入,還是兩者都打開。
我想指出,任何形式的「檢查,看看文件X是否開放的寫作過程,如果是這樣做......」的過程是受競爭條件。一些其他進程 可能會在檢查完成後,但在操作開始之前打開文件。
- 1. 如何知道圖像是否仍然存在
- 2. Linux上的Java寫入文件被刪除,但我仍然可以寫入它
- 3. 腳本如何知道用戶是否可以輸入?
- 4. 可可如何知道文件是否被編輯/關閉
- 5. EntitySpaces的文檔是否仍然可用?
- 6. 如何檢查文件是否仍在寫入?
- 7. 如何檢查是否可以將文件寫入目錄?
- 8. 如何判斷文件是否可以從腳本寫入?
- 9. 如何知道一個文件是否使用PHP完全寫入?
- 10. C#,Windows 7:如何可靠地檢查進程是否仍在寫入文件?
- 11. 可以將可填寫的PDF文件轉換爲XPS文件並仍然是可填寫的表單?
- 12. 我可以知道一個JavaScript文件是否已被執行?
- 13. 如何知道是否使用了document.createElement創建的元素仍然存在
- 14. 你如何知道CA是否可信?
- 15. 如何知道url是否可用?
- 16. 如何知道fastcgi_finish_request()是否可用?
- 17. 如何知道ChannelWriter是否寫入字節?
- 18. 如何知道一個jar文件是否可以在Android上運行?
- 19. 是否仍然可以在Grails中安裝全局插件
- 20. grep如何知道它正在寫入輸入文件?
- 21. 是否可以知道上傳文件的類型是否爲圖像?
- 22. 是否可以同時讀寫文件?
- 23. 如何確定文件是否仍然通過ftp傳輸
- 24. 如何知道是否
- 25. 將數據寫入文件,但文件仍然包含NULL
- 26. Rails,如何知道特定請求是否仍在運行
- 27. 我如何知道CUDA是否可以使用?
- 28. 如何知道一臺機器是否可以用c#ping?
- 29. 如何知道某個類是否可以用作靜態類?
- 30. 如何知道算法是否可以做得更快
看看flock示例:http://www.tuxradar.com/practicalphp/8/11/0 – 2011-01-09 16:01:42