PHP:在文件名中添加时间戳,在文件中添加时间戳

时间:2013-08-24 18:23:39

标签: php caching timestamp

我正在使用.txt文件为自己创建一个缓存系统,不同的东西的缓存时间也不同,所以会更好:

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

a)在几秒钟内将过期时间添加到文件名,如“098f6bcd4621d373cade4e832627b4f6-180.txt”(缓存限制为180秒)。

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

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

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

我应该使用哪种方式或有c)方式?

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

2 个答案:

答案 0 :(得分:0)

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

例如:

制作新的缓存文件时,请将文件名放在表格中,并提供截止日期。然后,当您执行脚本时,查看过期日期是否为现在,如果是,则取消链接文件。

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

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

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

然后在_,使用strstrsubstr

爆炸会更容易

答案 1 :(得分:0)

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