删除上传的文件

时间:2011-04-11 11:07:21

标签: php

我正在构建一个在linux机器上使用PHP的网站。客户端可以上传我移动到永久位置的文件。显然,服务器不能永远包含文件。

我正在考虑使用一个可以删除超过几个小时的文件的脚本。

我该如何做到这一点?

谢谢,
tzvi。

4 个答案:

答案 0 :(得分:2)

两种可能的解决方案:


第二个想法可能比第一个好:

  • 是的,当你需要对系统进行编码时,它意味着现在需要做更多的工作
  • 但是,如果你有很多文件,通过所有这些文件找到旧文件,使用第一个解决方案,将不会很快 - 当磁盘工作时,可能会使服务器运行一段时间,寻找文件。


请注意,第一个解决方案可以增强很多:

  • 每天和每小时使用不同的文件夹2011-04-10-102011-04-112011-04-10-12,...)
  • 然后,只删除足够老的目录(及其内容)

有了它,无需搜索文件:只搜索几个目录。

答案 1 :(得分:0)

如果您具有对服务器的shell访问权限,则可以使用调用(ba)sh脚本的cron作业来根据时间查找和删除文件。以下脚本在/ public_html / YOUR-FOLDER文件夹中以递归方式查找过去24小时上传的文件并删除它们

#!/bin/bash

find /public_html/YOUR-FOLDER -type f -mtime +1 -exec rm {} \;

另一方面,如果为每个上传的文件保留数据库记录,还可以使用调用php文件的cron作业根据时间戳删除文件

答案 2 :(得分:0)

如果您想以PHP方式执行,我认为您可以测试下面的代码。 filePath可以是保存文件的永久位置。您可以根据自己的要求修改时间。

        foreach(glob($filePath . '*') as $filename)
        {
            if((filemtime($filename) + 2 * 24 * 60 * 60) < time())
                unlink($filename);          
        }

并在cron作业中使用它来删除特定时间。

答案 3 :(得分:0)

您可以创建一个cron job,它将每小时执行一次,在cron job中,您将在创建文件时检查timestamps个文件,并根据您可以移动的文件你的文件到一些备份文件夹。您可以在cron jobPHP中撰写shell script