Php 删除旧的远程FTP文件夹

Php 删除旧的远程FTP文件夹,php,ftp,Php,Ftp,我已经编写了一个MySQL数据库备份脚本,它将备份文件存储在远程FTP服务器中。它在根目录中创建一些以数据库名称命名的文件夹,然后在每个文件夹中创建一些以当前日期命名的文件夹(格式:yyy-mm-dd),并在这些文件夹中上载以确切时间命名的备份文件 我还需要删除旧的二级文件夹(按日期命名);我是指超过4天的文件夹。这是我有问题的部分。我用ftp_nlist尝试了一些代码,我可以用它列出文件夹,我还用ftp_mdtm获取创建日期,并将其与过期日期进行比较。但结果并不好。这是我的密码: ... $

我已经编写了一个MySQL数据库备份脚本,它将备份文件存储在远程FTP服务器中。它在根目录中创建一些以数据库名称命名的文件夹,然后在每个文件夹中创建一些以当前日期命名的文件夹(格式:yyy-mm-dd),并在这些文件夹中上载以确切时间命名的备份文件

我还需要删除旧的二级文件夹(按日期命名);我是指超过4天的文件夹。这是我有问题的部分。我用ftp_nlist尝试了一些代码,我可以用它列出文件夹,我还用ftp_mdtm获取创建日期,并将其与过期日期进行比较。但结果并不好。这是我的密码:

...

$skip = array('.', '..', '.ftpquota', '.htaccess');
$expire_date = date('Y-m-d', strtotime('-4 days', time()));

$ff_list = ftp_nlist($con, $db_dir);
foreach($ff_list as $item)
{
    if(in_array($item, $skip))
    {
        continue;
    }
    $mod_time = ftp_mdtm($con, $item);
    if(strtotime($expire_date ) >= $mod_time)
    {
        ftp_rmdir($con, $item);
    }
}

...

请参加我需要删除旧文件夹及其所有内容,因此我需要合适的删除命令(我不知道ftp\u rmdir是否正常工作)。

您使用正确的命令
ftp\u rmdir

但我敢打赌,问题在于,这个函数与rmdir一样,要求目录为空

这里有一个递归删除函数警告!未经测试

//credentials
$host = "ftp server";
$user = "username";
$pass = "password";

//connect
$handle = @ftp_connect($host) or die("Could not connect to {$host}");

//login
@ftp_login($handle, $user, $pass) or die("Could not login to {$host}");

function recursiveDelete($directory){
    //try to delete
    if( !(@ftp_rmdir($handle, $directory) || @ftp_delete($handle, $directory)) ){
        //if the attempt to delete fails, get the file listing
        $filelist = @ftp_nlist($handle, $directory);

        //loop through the file list and recursively delete each file in the list
        foreach($filelist as $file){
            recursiveDelete($file);
        }

        //if the file list is empty, delete the directory we passed
        recursiveDelete($directory);
    }
}
试试这个:

if(strtotime($expire_date ) >= strtotime($mod_time))

我还可以检查每个文件夹的名称,并记下日期,然后将其与今天的编号进行比较。这是因为文件夹名是保存的日期(yyyy-mm-dd),但我更喜欢上面这样做。我不希望依赖文件夹名称。谢谢,但主要问题是日期比较!:D我应该只删除超过4天的文件夹。