我想知道是否有使用脚本或其他选项的方法,我可以自动从我的服务器删除特定日期的文件。
我创建了一个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,我是否需要任何特殊命令来运行它?你会建议多久一次?
答案 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');
}