Я пишу кеш-модуль на 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 файлов в папке - это не очень хорошая вещь, верно?
Какой лучший способ сделать это?