你好,
如果我有一個PHP腳本和一個文本文件和2個用戶在追加一個長文本字符串文本文件同時,會發生什麼?它會繼續嗎?它是否被緩衝,所以都被附加在上面,還是會被丟棄?
你好,
如果我有一個PHP腳本和一個文本文件和2個用戶在追加一個長文本字符串文本文件同時,會發生什麼?它會繼續嗎?它是否被緩衝,所以都被附加在上面,還是會被丟棄?
通常,操作系統會在寫入過程中鎖定文件,因此其他進程必須等待寫入過程完成才能開始寫入。
因此它應該包含一個客戶端的延遲或fopen()期間的PHP警告/錯誤。取決於代碼的工作方式以及使用的功能。
使用fopen
與c
模式參數,可以強制文件變得鎖定,直到你fclose
文件。這將不允許多人同時寫入文件。通常,文件系統會默認執行此操作(取決於操作系統配置),但是,使用模式參數將覆蓋您的基礎。
的細節將取決於平臺和寫入數據的大小,但如果兩個過程將開始,在該文件中的同一位置寫,最後一個常勝可以這麼說。但是,您最終也可能會交錯數據,特別是在一次編寫大量數據時。
看看flock()。操作系統沒有完全「爲你做」。
** PHP同時文件寫入**的可能重複。那裏的答案也應該涵蓋這個問題:http://stackoverflow.com/questions/1209688/php-simultaneous-file-writes – 2011-01-20 22:18:52