Php 如何设置缓存文件的到期日?

Php 如何设置缓存文件的到期日?,php,file,caching,cache-control,Php,File,Caching,Cache Control,我想知道,如果缓存文件不在/tmp文件夹中,像doctrine cache或zend cache这样的缓存系统如何设置缓存文件的过期时间。如何设置缓存文件的过期时间?如果我想将自己的缓存文件系统与php一起使用,而不是使用doctrine或zend,那么如果我不想将其放入/tmp文件夹中,如何设置其过期时间?我建议使用缓存服务作为。设置函数有一个缓冲区,这意味着值过期的秒数。缓存非常简单。假设您有目录缓存。 您可以为变量$expire 所以算法是 $file = "cache/cached.jp

我想知道,如果缓存文件不在/tmp文件夹中,像doctrine cache或zend cache这样的缓存系统如何设置缓存文件的过期时间。如何设置缓存文件的过期时间?如果我想将自己的缓存文件系统与php一起使用,而不是使用doctrine或zend,那么如果我不想将其放入/tmp文件夹中,如何设置其过期时间?

我建议使用缓存服务作为。设置函数有一个缓冲区,这意味着值过期的秒数。

缓存非常简单。假设您有目录
缓存
。 您可以为变量
$expire

所以算法是

$file = "cache/cached.jpg";
$expire = 60 * 3600;

if (filectime($file) > time() + $expire)
{
   // reload file and invalidate cache
} else if (file_exists($file){
   // get from cache
} else {
  // get file and save it to cache then return  
}

但是最好使用缓存,比如http缓存等,带有expire头、varnish等。

实际上,我想将其用于.dat ir.txt文件,而不是页面,所以仍然可以像您所说的那样使用http缓存吗?在您的示例缓存中,是否在60小时后过期?对于.txt文件,使用filectime而不是filemtime更好吗@Robertyes可以通过webserver来实现,例如在我所知道的apache内存缓存系统中。但这里我的问题是关于文件缓存的。不管怎样,我还是投你的票。那么我认为你必须自己编写过期逻辑。看看这个答案:正如链接中建议的那样,如何使用rename()锁定?它自动锁定,或者我应该传递哪个参数来锁定@我不太了解文件锁定,但这个答案似乎解释了很多:如果你正在为你的框架构建一个php组件,也许我个人会建议你不要让任何其他进程修改你的缓存文件,只编写你自己的应用程序锁定脚本(每次要使用缓存文件时,必须检查锁)。