0

我正在使用 .txt 文件为自己创建一个缓存系统,并且缓存时间因不同的事物而异,所以这会更好:

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

a) 以秒为单位将过期时间添加到文件名中,例如“098f6bcd4621d373cade4e832627b4f6-180.txt”(缓存限制为 180 秒)。

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

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

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

我应该使用哪个或有 ac) 方式?

编辑:我不知道这是否清楚,但我正在努力寻找性能方面的最佳方式。

4

2 回答 2

0

您是否可以创建文件夹(这将是唯一的 id?)然后在内部创建一个名为到期日期的文件?我认为这可以实现最大的灵活性,对文件夹内的到期日期进行排序,并且您可以将文件内部保留为实际内容。

于 2013-08-25T11:12:09.773 回答
0

是的,还有第三种方式——甚至是第四种方式——使用一些数据库处理和unlink().

例如:

当您制作新的缓存文件时,将文件名放在表中,并注明到期日期。然后,当您执行脚本时,请查看到期日期是否现在,如果是,请取消链接文件。

第四种方法根本没有效率,但有效。

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

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

然后在_,使用strstr,或substr

于 2013-08-24T18:48:12.427 回答