php脚本删除超过24小时的文件,删除所有文件

2022-08-30 13:30:17

我写了这个php脚本来删除超过24小时的旧文件,但它删除了所有文件,包括较新的文件:

<?php
  $path = 'ftmp/';
  if ($handle = opendir($path)) {
     while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.$file)) < 86400) {  
           if (preg_match('/\.pdf$/i', $file)) {
              unlink($path.$file);
           }
        }
     }
   }
?>

答案 1
<?php

/** define the directory **/
$dir = "images/temp/";

/*** cycle through all files in the directory ***/
foreach (glob($dir."*") as $file) {

/*** if file is 24 hours (86400 seconds) old then delete it ***/
if(time() - filectime($file) > 86400){
    unlink($file);
    }
}

?>

您还可以通过在*(通配符)后添加扩展名来指定文件类型,例如

对于 jpg 图像,请使用:glob($dir."*.jpg")

对于 txt 文件,请使用:glob($dir."*.txt")

对于 htm 文件,请使用:glob($dir."*.htm")


答案 2
(time()-filectime($path.$file)) < 86400

如果当前时间和文件的更改时间在彼此相距 86400 秒以内,则...

 if (preg_match('/\.pdf$/i', $file)) {
     unlink($path.$file);
 }

我认为这可能是你的问题。将其更改为 > 或 >= ,它应该可以正常工作。


推荐