我正在用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