我编写了一个例程来删除文件夹中过去x天未使用过的所有文件。
我正在使用函数fileatime()
[或更准确地说是DirectoryIterator函数getATime()
]
调试时,我注意到所有文件的最后访问时间是今天早上1点。
这是服务器自动备份的时间。
所以问题是...... 如何找出用户上次访问文件的时间,而不是自动备份。
任何帮助都将不胜感激。
大卫
答案 0 :(得分:0)
这是我提出的解决方案。 每当用户访问文件时,我都会将文件复制到新名称并删除旧版本。这设置了一个新的修改时间。
独立地,在一个单独的例程中,我查看文件夹中的所有文件,并删除自X天以来未被访问(修改)的任何文件夹。
function DeleteUnusedFiles($FolderName,$NumberOfDays)
{
$fileSPLObjects = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($FolderName),RecursiveIteratorIterator::LEAVES_ONLY );
foreach( $fileSPLObjects as $fullFileName => $fileSPLObject )
{
$TheFileName=$fileSPLObject->getFilename();
$DaysOld=(int)( time()-$fileSPLObject->getMTime())/(3600*24) );
if( $DaysOld >= $NumberOfDays ) unlink( $fileSPLObject->getRealPath() );
}
}