0

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

我创建了一个 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,我需要任何特殊的命令来运行它吗?你建议多久运行一次?

4

3 回答 3

1

根据您所说的,我认为您最容易开始使用的是 cron 作业和 php 脚本。

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

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

这是一个指向 Crontab 信息和使用情况的随机 Google 结果的链接。

于 2012-11-15T23:23:26.500 回答
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 运行这个脚本

于 2012-11-15T23:41:38.547 回答
0

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

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

如果您无权访问 cron,则将其作为垃圾收集作为关闭功能运行。例如(公然窃取凯尔哈德森的代码,尽管我注意到他甚至从这里复制了评论;)

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');
}
于 2012-11-16T00:13:35.220 回答