如果目录包含10个以上的文件,则删除最旧文件的PHP代码

时间:2017-01-03 04:08:11

标签: php

如果文件总数超过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);
?>

0 个答案:

没有答案