Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单PHP删除除最后3天之外的所有文件-_Php_Ftp - Fatal编程技术网

简单PHP删除除最后3天之外的所有文件-

简单PHP删除除最后3天之外的所有文件-,php,ftp,Php,Ftp,有一个FTP用户和一个目录:/home/user/public\u html/备份/ 每天03:00,一个带有日期的文件夹和一个3,5GB的文件将通过FTP自动添加到该文件夹中。 现在,如果在地图备份中每天添加3,5GB,则在14天内将49GB 大约14天,我将拥有以下文件夹结构: 2015-12-18 2015-12-17 2015-12-16 2015-12-15 2015-12-14 2015-12-13 2015-12-13 2015-12-12 2015-12-11 2015-12-1

有一个FTP用户和一个目录:/home/user/public\u html/备份/

每天03:00,一个带有日期的文件夹和一个3,5GB的文件将通过FTP自动添加到该文件夹中。 现在,如果在地图备份中每天添加3,5GB,则在14天内将49GB

大约14天,我将拥有以下文件夹结构:

2015-12-18
2015-12-17
2015-12-16
2015-12-15
2015-12-14
2015-12-13
2015-12-13
2015-12-12
2015-12-11
2015-12-10
2015-12-09
2015-12-08
所以我想为这个制作一个cronjob脚本,每个星期天晚上00:00u,一个.php将通过cronjob自动执行

示例:
2015-12-18
a.php脚本将被执行,除最后3个添加的文件夹外,所有文件夹将被删除:
2015-12-18-2015-12-17-2015-12-16

.php脚本将删除所有文件以及最后3个添加的文件夹/文件 在地图中备份

这是posibble with.PHP吗?是的,有人给我一个脚本样本吗? 还是可以用更好的解决方案

给你。 使用glob填充一个包含所有目录的数组,对数组进行切片以删除最后3项,然后删除其他项

$files = glob('/tmp/*', GLOB_ONLYDIR);

$deletions = array_slice($files, 0, count($files) - 3);

foreach($deletions as $to_delete) {
    array_map('unlink', glob("$to_delete/*.*"));
    $deleted = rmdir($to_delete);
}

我不太熟悉PHP上的某个时间段,但我不会玩太多,但我会这样做:


如果今天是星期天,则将数据库中的今天日期设置为上次删除的日期,然后编写一些简单的代码,检查过了多少天或几秒钟,如果过了7天,则将删除数据库中的所有内容,但上次尝试的日子除外。添加的项目很简单,我认为`

nix*,不需要php,您可以将其作为cronjob运行

find /path/to/files* -mtime +3 -exec rm {} \;

我刚刚编辑了我的答案,它检查了3个小时,而不是3天。我已经执行了你的php脚本,但如果我在这里刷新,仍然可以看到:用一些调试信息编辑了我的答案:)还要检查php是否可以取消文件链接(+w代表该目录上的php用户)你的$files数组是否填充了文件名?debug foreach显示了什么吗?谢谢@DidierSampaolowhat OS的回答,你不需要php来支持这个CentOS,但我也想知道是否可以使用.php,因为有一个“服务器”,我没有SSH访问权@Dagoni如果你不熟悉,那么不要回答这个问题,因为从来没有写过“数据库”,但谢谢你的解释,但这个答案并不能帮助我知道这是同一件事,我只是举个例子,因为我总是使用数据库,你可以不用它来做这是一个评论(最好)不是一个问题answer@Dragon谢谢我在终端中使用CENTOS进行了测试:但文件夹仍然存在:基于时间戳shownYes,它们的时间不超过3天,因为我现在正在测试它,然后才将脚本用于实际工作。。实际上,他必须删除除最后3个添加的文件夹之外的所有文件夹。。