2013-08-24 75 views
0

我使用.txt文件创建自己的高速缓存系统和缓存时间内是不同的东西,所以这将是更好的不同:PHP:添加时间戳文件名添加VS它的文件

(我用“098f6bcd4621d373cade4e832627b4f6”作为测试MD5哈希)

a)将所述期满时间到文件名中像“098f6bcd4621d373cade4e832627b4f6-180.txt”(缓存限于180秒)秒。

b)将过期时间添加到文件的第一行并从第二行开始添加缓存的内容。命名文件只是“098f6bcd4621d373cade4e832627b4f6.txt”。

与a)我必须扫描整个目录并用“ - ”分解所有文件名并检查爆炸[0]是否与散列相等。

随着b)我可以只使用file_exists(),然后读取第一行,看看缓存是否仍然有效。

我应该使用哪种方法或有哪些方法?

编辑:我不知道是否清楚,但我试图找到性能明智的最佳方式。

回答

0

是的,还有第三种方法 - 即使是第四种方式 - 使用一些数据库处理和unlink()

例如:

当你让你的新的缓存文件,放在一个表中的文件名,和截止日期。然后当你执行你的脚本时,看看是否有效日期是现在,如果是这样的话,取消链接文件。

第四种方法效率不高,但有效。

foreach(glob('files/*') as $file) 
{ 
    if(filemtime($file) < strtotime('-180 seconds')) 
    { 
    unlink($file); 
    } 
} 

我会去你的第一个选项,但有一个更好的格式... expirationDate_crc32hash.file。例如:180_127264de.txt

然后,它会更容易爆炸的_,使用strstr,或者substr

+0

我打算缓存mysql结果,所以我不想使用任何数据库相关来查找缓存的数据。 缓存文件夹最终可能拥有多达1000个不同的.txt文件。通过遍历它们比检查特定散列上的file_exists更有效率,并且仅在文件的第一行读取到期时间? – unska

+0

不知道这一点,但我的猜测是速度并不快,但PHP很难预测。 – Lurvik

0

是否有可能为你创建的文件夹(这将是唯一ID?),那么你内心会创建一个名为过期日期的文件?我认为这允许最大的灵活性,对文件夹内的过期日期进行排序,并为文件的内部预留实际内容。

相关问题