用于删除早于 24 小时的文件的 php 脚本,删除所有文件

新手上路,请多包涵

我写了这个 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);
           }
        }
     }
   }
?>

原文由 ChuckO 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 340
2 个回答
(time()-filectime($path.$file)) < 86400

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

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

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

原文由 ssube 发布,翻译遵循 CC BY-SA 2.5 许可协议

<?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")

原文由 Mike 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏