我正在用PHP寫一個緩存模塊。它會嘗試使用$string+timestamp
作爲文件名寫入緩存。查找數千個文件中是否存在動態文件名
我沒有寫緩存的問題。
問題是,我做了一個foreach循環來獲得我想要的緩存。
這是我用來獲取緩存的邏輯:
foreach ($filenames as $filename){
if(strstr($filename,$cachename)){//if found
if(check_timestamp($filename,time()))
display_cace($filename);
break;
}
}
但是,當它試圖獲取和讀取緩存,它減緩服務器關閉。假設我在一個文件夾中有10000個緩存文件,並且我需要檢查該緩存文件夾中的每個文件。
換句話說,我寫這個格式的緩存文件filename_timestamp
。例如:cache_function_random_news_191982899010
在文件夾./cache/
中。我只想通過cache_function_random_news_
並遞歸檢查該文件夾。 如果我在文件名上找到那針,用它來顯示它,然後中斷。
但遞歸檢查文件夾中的10000個文件不是一件好事,對嗎?
這樣做的最好方法是什麼?
是的,這也是在codeigniter緩存系統上實現的。我也是這樣做的。並且由於該系統在完成應用程序的99%之後實施,代碼變得有點像黑客。 它沒有顯着減少內存使用量,但將計算時間減少到90%,因爲它繞過了數據庫。 – r4ccoon 2010-11-10 10:31:29