php - x 次后自动删除所有文件

标签 php file delete-file

如何在 x-time 后(比如 24 小时后)自动删除子目录下的所有文件 - 而无需使用来自服务器或 pl 的 cronjob 命令。您如何仅使用 PHP 代码或仅访问页面而不单击某些内容并自动运行命令来执行此操作。

最佳答案

对我第一个回答的最后评论的回应。我要编写代码示例,所以我创建了另一个答案,而不是再添加一条评论。

要删除带有自定义扩展名的文件,您必须实现代码:

<?php
  $path = dirname(__FILE__).'/files';
  if ($handle = opendir($path)) {

    while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.'/'.$file)) < 86400) {  // 86400 = 60*60*24
          if (preg_match('/\.txt$/i', $file)) {
            unlink($path.'/'.$file);
          }
        }
    }
  }
?>

注释: 1. 这个例子使用了正则表达式/\.txt$/i,也就是说,只有扩展名为txt的文件将被删除。 '$' 符号表示文件名必须以字符串 '.txt' 结尾。标志“i”表示比较将不区分大小写。更多关于 preg_match()功能。

此外,您还可以使用 strripos()搜索具有特定扩展名的文件的功能。这是代码片段:

<?php
  $path = dirname(__FILE__).'/files';
  if ($handle = opendir($path)) {

    while (false !== ($file = readdir($handle))) {
        if ((time()-filectime($path.'/'.$file)) < 86400) {  // 86400 = 60*60*24
          if (strripos($file, '.txt') !== false) {
            unlink($path.'/'.$file);
          }
        }
    }
  }
?>

评论:这个例子看起来更明显。 strripos() 的结果也可以通过组合两个函数来实现:strrpos(strtolower($file), '.txt'),但是,恕我直言,这是一个在代码中使用较少的函数以使其更具可读性和更小的好规则。请仔细阅读 strripos() 函数(返回值 block )页面上的警告。

还有一个重要提示:如果您使用的是 UNIX 系统,由于文件权限的原因,文件删除可能会失败。您可以查看关于 chmod() 的手册功能。

祝你好运。

关于php - x 次后自动删除所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921466/

相关文章:

php - gammu发送短信返回错误29

javascript - 没有图像验证的谷歌验证码

javascript - 根据我数据库中的 id 将数据从 html 对象传递到另一个对象

php - 使用 PHP 将 Excel 数据从特定行和列解析到 MySQL

linux - 理解标准输出、标准错误和标准输入

amazon-web-services - 防止某些 AWS AMI 被意外删除

file - 重命名文件夹中的所有文件为大写

java - 在运行时编写和实现新的 Java 类文件

c# - 从任何文件夹中删除所有文件

hadoop - Hive:如果我删除当前正在查询的文件会怎样?