PHP:将时间戳添加到文件名与将其添加到文件中

PHP:将时间戳添加到文件名与将其添加到文件中,php,caching,timestamp,Php,Caching,Timestamp,我正在使用.txt文件为自己创建一个缓存系统,不同的东西的缓存时间不同,所以哪一个更好: (我使用“098F6BC4621D373CADE4E832627B4F6”作为测试md5散列) a) 将过期时间添加到文件名(以秒为单位),如“098F6BC4621D3CADE4E832627B4F6-180.txt”(缓存限制为180秒) b) 将过期时间添加到文件的第一行,并从第二行开始添加缓存的内容。将文件命名为“098F6BC4621D373CADE4E832627B4F6.txt” 使用a)我必

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

(我使用“098F6BC4621D373CADE4E832627B4F6”作为测试md5散列)

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

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

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

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

我应该用哪一种方法,还是有办法


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

是的,有第三种方法,甚至第四种方法,使用一些数据库处理和
取消链接()

例如:

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

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

foreach(glob('files/*') as $file)
{
  if(filemtime($file) < strtotime('-180 seconds'))
  {
    unlink($file);
  }
}
foreach(glob('files/*')作为$file)
{
如果(filemtime($file)
我会同意你的第一个选择,但是有一个更好的格式。。。expirationDate\u crc32hash.file。例如:180_127264de.txt


然后,在u,使用
strstr
,或
substr

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

我将缓存mysql结果,因此我不想使用任何与数据库相关的内容来查找缓存的数据。缓存文件夹最终可能包含多达1000个不同的.txt文件。通过它们进行全局搜索比检查特定散列上是否存在文件_并在过期时间内只读取文件的第一行更有效?我不知道这一点,但我猜它没有那么快,但PHP很难预测。