1. 程式人生 > >file_put_contents記錄的日誌內容丟失

file_put_contents記錄的日誌內容丟失

獲得 一個 contents 可選參數 其他 log 多人 pen 同時

使用函數 file_put_contents()來記錄日誌,當多人同時操作,記錄的日誌會莫名其妙的丟失,即並發追加寫時,日誌會丟失。

經分析,是不正確使用函數 file_put_contents() 造成

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
filename :寫入的文件名和路徑
data :寫入的數據
flags :可選參數,FILE_USE_INCLUDE_PATH, FILE_APPEND(追加寫),LOCK_EX(寫入時獲得一個獨占鎖)

LOCK_EX,寫文件的時候先鎖定,此時其他寫入操作會隊列等待。

      當寫入完成時,其他寫入操作才會執行。防止多人同時寫入造成內容丟失。

file_put_contents($logFilename, $content, FILE_APPEND|LOCK_EX);

file_put_contents記錄的日誌內容丟失