如果文件总数超过10,我已成功编写代码来删除目录中最旧的文件。下面的代码工作正常:
<?php
function countFolder($dir) {
return (count(scandir($dir)) - 2);
}
$fileCount = countFolder('/homepages/mypath/toc');
if ($fileCount > 10)
{
$files = glob('toc/*.txt');
rsort($files);
$oldest = array_pop($files);
if (!unlink($oldest))
{
echo ("Error deleting $oldest");
}
else
{
echo ("Deleted $oldest");
}
} else {
echo ("Nothing to delete");
}
?>
但如果目录中有超过11个文件,则无法重复代码。我想删除最旧的文件,只能删除10个文件。这是我尝试循环代码的地方,但它不起作用。
编辑:我将$ filecount移动到deleteFiles()函数中。仍然没有工作。
重复一个功能甚至是我正在尝试的最佳方式吗?
<?php
function countFolder($dir) {
return (count(scandir($dir)) - 2);
}
function deleteFiles() {
$fileCount = countFolder('/homepages/mypath/toc');
if ($fileCount > 10)
{
$files = glob('toc/*.txt');
rsort($files);
$oldest = array_pop($files);
if (!unlink($oldest))
{
echo ("Error deleting $oldest");
}
else
{
echo ("Deleted $oldest");
deleteFiles();
}
} else {
echo ("Nothing to delete");
}
}
?>
解决:我终于让这段代码起作用了:
<?php
function countFolder($dir) {
return (count(scandir($dir)) - 2);
}
do {
$fileCount = countFolder('/homepages/mypath/toc');
if ($fileCount > 10)
{
$files = glob('toc/*.txt');
rsort($files);
$oldest = array_pop($files);
if (!unlink($oldest))
{
echo ("Error deleting $oldest");
}
else
{
echo ("Deleted $oldest");
//countFolder();
}
} else {
echo ("Nothing to delete");
}
} while ($fileCount > 10);
?>