2014-01-12 53 views
-2

我有一個文件(usernames.txt),它包含我網站成員的每個用戶名,當他們提交用戶名時,它將被保存在「usernames.txt」中,問題在於,每天有很多用戶在那裏提交用戶名,我想要一個php代碼或者會自動刪除第一個(頂部)用戶名的東西(即使每分鐘提交超過20個用戶名,我需要的腳本將使「usernames.txt」文件更小,這將使我的服務器更快一點。:) 如果有人知道或者知道我正在談論的腳本,那將會非常棒。 :) 感謝每30秒刪除.txt文件中的第一個內容

+0

**請**在此檢查:http://www.php.net/manual/en/refs.database.php – elclanrs

+2

爲什麼它會記錄嘗試然後刪除它們?他們是否備份?如果是這樣,你能不能只是把日誌記錄到時間設置的文件名中,比如最近30秒鐘生成的'usernames-20140110-121500.txt'? – qooplmao

+0

如果你想得到幫助正確解釋你想實現什麼 – iNDicator

回答

0

我也真的,真的鼓勵你看看http://php.net/manual/en/refs.database.php爲@elclanrs建議。 真的鼓勵你。

如果沒有這個建議,還有很遠的第二位建議,我甚至建議您嘗試使用serializeunserialize,這樣您就可以更快地讀入和導出數據。然後,您可以使用unserialize以陣列/對象的形式讀取數據,對其進行處理,然後使用serialize將其放回到文件中。

如果進一步失敗,則必須將該文件讀入內存(file_get_contents),循環遍歷這些行並刪除第一行,然後將整個文件寫回去。或者,一次讀取一行(fopen),跳過第一行,將文件的其餘部分寫回臨時文件(fputs),然後交換文件(rename)。

最後,假設你在* nix系統上,你可以使用類似:

exec("sed '1d' {$my_file_name}", $result); 
file_put_contents($my_file_name, $result); 

這一切都這樣說,你真的應該看看使用DB。如果你不想要一個獨立的數據庫,你可以使用SQLite,這將write the database to a local file

$數據庫句柄= sqlite_open( 'DB/test.db的',0666,$錯誤);

+0

我的生活中曾經使用過一次數據庫,所以我很難將我的網站腳本從php切換到數據庫腳本,換句話說:我吮吸數據庫代碼:/ – user3184573

+0

沒時間像現在學習。 :-)但是還有其他一些建議,這可能會有所幫助。 – Drew

相關問題