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


PHP: adding timestamp to filename vs adding it inside the file

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

(我使用"098f6bcd4621d373cade4e832627b4f6"作为测试md5散列)

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

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

对于a),我必须扫描整个目录,并用"-"分解所有文件名,并检查explore[0]是否与哈希相等。

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

我应该使用哪种方法,或者有c)方法吗?

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

是的,还有第三种方法——甚至第四种方法——使用一些DB处理和unlink()

例如:

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

第四种方法一点也不有效,但有效。

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

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

然后在_处爆炸会更容易,使用strstrsubstr

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