自动删除文件和包含文件的文件夹,在24小时后。

3
我在使用PHP删除文件和包含这些文件的文件夹时遇到了问题。我希望能够在24小时后自动删除服务器上的文件夹以及包含文件的文件。我创建文件夹来保存上传的文档。我尝试了一些代码,但对我来说并不起作用。希望得到任何帮助。谢谢!
以下是我尝试的原因:
$path = dirname(__FILE__).'/Docs/'.$foldername;
  if ($handle = opendir($path)) {

    while (false !== ($filesss = readdir($handle))) {
        if ((time()-filectime($path.'/'.$filesss)) < 86400) {  // 86400 = 60*60*24

           unlink($path.'/'.$filesss);


        }
    }
  }

我尝试了这段代码,但它并没有按照我的预期工作。该代码立即删除了我的文件,但我想在24小时后删除这些文件,并且还想在24小时后删除包含这些文件的文件夹。请告诉我我做错了什么?


也许只需要将不等号符号反转一下?(time() - filectime() < 86400 对于文件的返回值为真表示其“年龄”小于24小时) - Timurib
2个回答

2
创建Cron文件并编写以下代码。
function Delete($path)
{
    if (is_dir($path) === true) {
        $files = array_diff(scandir($path), array('.', '..'));

        foreach ($files as $file)
        {
            Delete(realpath($path) . '/' . $file);
        }

        return rmdir($path);
    } else if (is_file($path) === true) {
        return unlink($path);
    }

    return false;
}

你在哪里指定了时间? - Pranay Sute
还有一个问题,不创建 Cron 文件是否可能? - Pranay Sute
定时任务设置为午夜12点。 - Sujal Patel
没有cron文件,它就无法自动执行。 - Sujal Patel
让我们在聊天中继续这个讨论 - Pranay Sute
如果这个程序每24小时运行一次,它将会删除它找到的所有东西。即使一个文件/目录在cron运行前1秒钟被创建,它也会被删除。你需要检查文件/目录的年龄,并只在它们超过24小时时才删除它们。 - Oliver Maksimovic

0
if ((time() - filectime($path.'/'.$filesss)) >= 86400)

你需要检查当前时间和文件创建时间之间的差距是否超过24小时,而不是少于24小时。


它不起作用,正如您所看到的,我已经在我的代码中使用了它。 - Pranay Sute
1
@PranaySute 你正在使用 < 运算符。请使用 >= 来检查时间差是否等于或超过24小时。 - Oliver Maksimovic
噢,好的,我会尝试这个并让你知道结果! - Pranay Sute

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接