2012-07-30 81 views
0

我有拿日期(錯誤系統)和錯誤,將其插入到一個文件:PHP,日期()和FOPEN

$fp = fopen('errorFile.txt', 'a'); 
$message = "At the time: " . date("Y,m,d\|H:i:s") . " the following error took place: " . $e->getMessage(); 
fwrite($fp, $message); 
fclose($fp); 

我的問題:爲起點在FOPEN在第二個參數我需要指針在開始和那看着手冊,我需要的參數是只寫,把指針放在開始處,而不是截斷文件到零長度,唯一我發現的是參數「A」一切都很好用除了在每次年底指針「一」,所以如果有人知道我可以使用什麼參數,使指針在開始,它的只寫和它不會截斷文件爲零長度,我也試着爲你看到插入日期和示例:這裏的時間是18:00插入時間是15:00

+0

你想把文字的內容放在最上面? – 2012-07-30 15:34:11

+0

http://stackoverflow.com/questions/1760525/need-to-write-at-beginning-of-file-with-php的可能的重複,有兩個解決方案應該爲你工作 – Mark 2012-07-30 15:37:36

+0

,因爲如果你想,有沒有直接的方式來做到這一點。如果這是一個錯誤日誌,則應該在文件的末尾附加新內容。 – 2012-07-30 15:37:55

回答

1

你可以試試這個邏輯

$message = "At the time: " . date("Y,m,d\|H:i:s") . " the following error took place: " . $e->getMessage(); 

$file = '/path/to/file'; 

$fileContents = file_get_contents($file); 

file_put_contents($file, $message . $fileContents); 
+1

如果你真的想這樣做,我會推薦使用+並將其放到文件末尾以避免每次寫入操作時首先讀取文件的開銷(可能會變大隨着時間的推移)。如果你想讓它顯示爲newset-to-oldest,可以編寫一個小的閱讀腳本來對消息進行重新排序(閱讀將不會發生在我認爲的寫作上) - 或者在控制檯上使用「tail」。 – MiDo 2012-07-30 15:43:16

+0

@Mi你可能是對的。我沒有考慮到這個劃痕的表現 – 2012-07-30 15:44:15

+0

它正在工作謝謝thecatontheflat。 – 2012-07-30 20:05:30

1

爲了讓你在開始你需要使用FSEEK之類的函數指針:

fseek($fp, 0);//place pointer at beginning 

FSEEK您可以使用寫入到文件後FWRITE

$fp = fopen('errorFile.txt', 'a'); 
$message = "At the time: " . date("Y,m,d\|H:i:s") . " the following error took place: " . $e->getMessage(); 
fseek($fp, 0); 
fwrite($fp, $message); 
fclose($fp); 

有關fseek的更多詳細信息,請參閱PHP documentationFile Handling Tutorial