【问题标题】:I would like To Delete All Directories That are Older Than 5 Minutes?我想删除所有超过 5 分钟的目录?
【发布时间】:2016-09-19 02:51:34
【问题描述】:

所以棘手的部分来了。每个名为 lib 和 vendor 的目录中都有两个子目录(子目录也有一些包含文件)。所以当我以前有特定的目录名称时,我曾经使用这个

<?php 
$dir = $_GET['fname'];
array_map('unlink', glob("$dir/lib/*.*"));
rmdir("$dir/lib");
array_map('unlink', glob("$dir/vendor/*.*"));
rmdir("$dir/vendor");
array_map('unlink', glob("$dir/*.*"));
rmdir($dir);`

所以我曾经有一个特定的目录名称。但现在我想改变这一点。 所以每当用户被重定向到我的脚本时

它应该删除所有早于 5 分钟的目录。仅有的 目录。

所有目录仅包含且仅包含 2 个名为 lib 和 vendor。它们也应该被删除。

这三个目录不应该被删除 project , images 和 资产。除了这些,所有目录都应该被删除。现在

请有人帮帮我。

【问题讨论】:

  • 我猜猜...您使用文件夹和文本文件作为数据库正确吗?我可以建议使用适当的数据库吗?如果您无法访问 MySQL,或者如果在服务器上设置太复杂,您可以直接使用 MySQLi,它只是一个文件,旨在成为非常轻量级的数据库,易于设置和使用,并且具有适当数据库的许多好处。设置 MySQLi 后,您可以使用 SQL 运行一个简单的命令来删除所有 5 分钟前的行。
  • MySQLi 不是 SQLite。上面的答案是指 SQLite。
  • 请注意,此脚本很容易被劫持以删除任意文件夹。您不应该从用户输入中删除要删除的文件夹。
  • 用户什么都不知道。他注册了。使用他的用户名创建一个文件夹。在他重定向主页后,他只能使用该服务 5 分钟。

标签: php timer directory delete-directory


【解决方案1】:

你可以这样做。首先创建一个删除目录的函数

function deldirectory($dir){

$tfile = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($tfile,
             RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
    if ($file->isDir()){
        rmdir($file->getRealPath());
    } else {
        unlink($file->getRealPath());
    }
}
return rmdir($dir);
}

在 foreach 循环中调用该函数以检查并删除超过 5 分钟的文件夹

foreach ($folders as $f){
    $lastmodified = filemtime($f);
    $farray = array("project","images","assets");//These folders are ignored
    $file_life = 300;
    if((time() - $lastmodified >= $file_life) && !in_array($f, $farray)){
       deldirectory($f);
    }
}

【讨论】:

  • 嘿阿米特,不幸的是,当我去 mydomainname.com/thescript.php 时,它只是回显了整个代码
  • 你没有添加
  • Nope.Its 给我这个错误 - 警告:在第 3 行的 /home/a3839924/public_html/tester.php 中为 foreach() 提供的参数无效
  • 你能粘贴整个代码吗?然后只有我能够检查它。或者您可以为此使用 pastebin。 pastebin.com
  • 在使用 $folders 之前你必须定义它。 $folders 是需要删除的目录路径数组。您必须提供目录路径。比如 $folders = array("/var/www/yourwebsite/somedir","/var/www/yourwebsite/somedir2");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
相关资源
最近更新 更多