【问题标题】:Create diectory (ftp_mkdir) only if files exist仅在文件存在时创建目录 (ftp mkdir)
【发布时间】:2013-04-19 14:40:56
【问题描述】:

我目前有一个连接到 ftp 目录的程序,如果它找到 csv 文件,运行脚本,然后在脚本对文件运行后,它会创建一个带有日期的备份文件夹并将 csv 文件移动到这个新创建的备份文件夹在 ftp 目录中。

但是,如果根目录中没有 csv 文件,我不希望创建备份文件夹,因为没有要移动的文件。我知道解决方案可能非常简单,但我似乎无法弄清楚!

 logMessage("Creating backups");
    $ftp_connection = @ftp_connect($ftp_url, $ftp_port, 6000);
    if(!@ftp_login($ftp_connection, $ftp_username, $ftp_password )) {
       logMessage("Could not connect to FTP: [$ftp_url], with Username: [$ftp_username], and Password: [$ftp_password]");
        die();
    }

$date = date('Y_m_d_(His)');

$newBackup = $ftp_root."/".$ftp_backup."backup_$date";

if (ftp_mkdir($ftp_connection, $newBackup)) {
    logMessage ("Successfully created [$newBackup\n]");

    foreach($filesToProcess as $file){
        $pathData = pathinfo($file);      
        if(isset($pathData['extension']) && $pathData['extension'] == 'csv'){

            if(!@ftp_rename($ftp_connection,
                    $ftp_root.'/'.$file,
                    $newBackup."/".$file)
            ){
                logMessage("Unable to move file: $file")
            }
        }
    }
}

【问题讨论】:

标签: php ftp directory


【解决方案1】:

您已经使用了 foreach($filesToProcess as $file) ,因此在 $filesToProcess 中它是文件数组。你可以使用 count($filesToProcess) 先统计文件数,然后如果 count>0 则执行代码。

【讨论】:

  • 我知道这很简单,但我认为我那天编程的时间太长了……谢谢。我只需要考虑任何现有目录 count > count($dir) 例如谢谢
【解决方案2】:
// $csv = your checks for string ending to .csv
$ftp_files = ftp_nlist($ftp_connection, ".");
foreach ($ftp_files = $files) {
   if ($files = $csv) {
     // makedir

在非常基本的语法中可能是这样的。 ftp_nlist 返回特定目录中所有文件的数组。

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2020-07-22
    • 2023-03-31
    • 2010-10-22
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多