2011-01-13 144 views
6

如果我通過file_put_contents數據寫入文件與FILE_APPEND標誌設置和兩個用戶在同一時間提交數據,這將追加不管,還是有機會的一個條目將被覆蓋?兩個用戶同時寫入一個文件? (PHP/file_put_contents)

如果我設置了LOCK_EX標誌,第二次提交是等待第一次提交完成,還是數據在無法獲得排它鎖時丟失?

怎樣PHP通常處理這個問題?我正在運行5.2.9版本。如果那很重要。

感謝, 瑞安

回答

2

你也可以檢查flock函數來實現適當的鎖定(不是基於時/睡眠訣竅)

1

如果通過LOCK_EX設置獨佔文件鎖定,嘗試寫入第二個腳本(時間方面)將簡單地返回從file_put_contents假的。

即:它不會坐着等待文件寫入變爲可用。

因此,如果需要的話,你需要在這個行爲自己編程,也許嘗試使用file_put_contents一個有限次數(例如:3)的sleep每次嘗試之間的合適尺寸的使用。

+1

您將需要運行`while`和`sleep`後`file_exists`檢查,以能夠等待解鎖 – RobertPitt 2011-01-13 16:41:59

+0

什麼問題#1 ...如果我不使用鎖定,會發生什麼? – NightHawk 2011-01-13 16:42:48

相關問題