2011-09-09 37 views
2

我對PHP相當陌生。如何在PHP中更改文件時獲取內容

我在我的計算機上經常更改內容的文本文件。我想在文件被更改後立即獲取文件的內容並將其插入到html表單中。 我想在php上使用filemtime函數,但我不知道如何做到這一點。我確實把一個做while循環:

$oldtime=filemtime($filename); 
$newtime = $oldtime; 
do { 
    sleep (1); 
    $newtime = filemtime($filename); 
    echo "old: $oldtime"."<br />"; 
    echo "new: $newtime"; 
} 
while ($newtime == $oldtime); 

但這將繼續執行。我也嘗試做一些如果陳述,但這也不會在我身邊。

你能提出任何建議嗎?如果有任何其他功能可以幫助?

感謝你在看這個線程

回答

0

你在while條件是邏輯上不正確。你正在做的轉讓

$newtime = $oldtime 

它應該是一個比較:

$newtime == $oldtime 
+0

while while循環條件,當然 – IvanGL

0

它讓執行,因爲要分配,而不是比較。

此:

while ($newtime = $oldtime); 

應該是這樣的:

while ($newtime == $oldtime); 
1

切換您的分配比較(=的==)糾正在你的代碼的bug。

雖然這裏可能會有更多的問題。當你想知道它是否被改變時,文件不是存儲信息的最佳位置。

理想情況下,您可以將保存在該文件中的信息放入數據庫中,在這裏您可以使用觸發器等有趣的功能來讓您知道數據是否已更改。否則,你的解決方案將浪費時鐘週期,試圖無休止地測試文件的變化,這是不是很有效

+0

非常感謝fir的幫助,我在腳本上有==,但即使使用它,由於php的最大執行時間,腳本會給出超時。如果無法訪問數據庫,您認爲我可以使用哪些其他方法? – Momo

0

頻繁輪詢文件是一種糟糕的方式來發布更新。

爲什麼不只是在格式化源數據的HTTP請求的終點處有一個php腳本(如果源文件是遠程的,可以對其進行緩存)。或者使用inotify觸發生成一個靜態文件?