从服务器中自动删除文件?

时间:2012-11-15 23:19:25

标签: php file timestamp delete-file

我想知道是否有使用脚本或其他选项的方法,我可以自动从我的服务器删除特定日期的文件。

我创建了一个AS3 eCard应用程序,其中php脚本将* .txt文件写入包含消息等相关详细信息的文件夹中,并想知道是否可以将“n”天内的文件自动删除某种方法可以避免使网站混乱?

PHP修正案:

    <?php

if ($handle = opendir('/myFolder/holdingFolder')) {

while (false !== ($file = readdir($handle))) { 
    $filelastmodified = filemtime($file);

    if((time() - $filelastmodified) > 14*24*3600)
    {
       unlink($file);
    }

}

closedir($handle); 
}
?>

我还在学习php,如果有更多经验的人可以看一下我指向正确的方向,如果这是在创建14天后删除文件夹中的文件的正确方法,我会很感激吗?

如果是这样,我的服务器是windows / Plesk,我是否需要任何特殊命令来运行它?你会建议多久一次?

3 个答案:

答案 0 :(得分:1)

根据你所说的,我认为开始使用的最简单的事情是cron作业和php脚本。

编写一个PHP脚本来循环检查创建日期的文件并删除旧文件。然后在cron作业上设置PHP脚本,该作业可以按照您想要的任何计划运行。

当然有1000种方法可以解决这个问题,但听起来你已经了解了PHP,并且cron可以在任何* nix系统上使用。

Here is a link to a random Google result for Crontab info and usage.

答案 1 :(得分:0)

尝试:

<?php
$dir = '/path/to/files/';
$days = 3600 * 24 * 7; // 7 days
if($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        if ( filemtime($dir.$file) <= time()-$days) {
           unlink($dir.$file);
        }
    }

    closedir($handle);
}

然后通过cron运行此脚本

答案 2 :(得分:0)

如果您可以访问cron,那么您不需要PHP - e,g,每天一次....

23 4 * * * find /your/directory -iname \*.txt -mtime +3 -exec rm -f {} \;

如果您无权访问cron,则将其作为关闭功能作为垃圾收集运行。例如。 (公然窃取Kyle Hudson的代码,虽然我注意到他甚至复​​制了评论from here;)

function gc_txt_files()
{
   $dir = '/path/to/files/';
   $days = 3600 * 24 * 7; // 7 days
   if($handle = opendir($dir)) {
        /* This is the correct way to loop over the directory. */
        while (false !== ($file = readdir($handle))) {
           if ( filemtime($dir.$file) <= time()-$days) {
              unlink($dir.$file);
           }
        }
        closedir($handle);
    }
}
if (17==rand(0,200)) { // adjust 200 depending on how frequently you want to clear out
    register_shutdown_function('gc_txt_files');
}