将文件夹传输到FTP服务器而不迭代所有文件

时间:2015-06-23 07:23:54

标签: php ftp

我正在尝试使用PHP将整个文件夹传输到FTP服务器。

现在我正在使用此代码:

function ftp_copyAll($conn_id, $src_dir, $dst_dir) { 
  if (is_dir($dst_dir)) { 
    return "<br> Dir <b> $dst_dir </b> Already exists  <br> "; 
  } else { 
    $d = dir($src_dir); 
    ftp_mkdir($conn_id, $dst_dir);   
    echo "create dir <b><u> $dst_dir </u></b><br>"; 
    while($file = $d->read()) { // do this for each file in the directory 
      if ($file != "." && $file != "..") { // to prevent an infinite loop
        if (is_dir($src_dir."/".$file)) { // do the following if it is a directory 
          ftp_copyAll($conn_id, $src_dir."/".$file, $dst_dir."/".$file); // recursive part 
        } else { 
          $upload = ftp_put($conn_id, $dst_dir."/".$file, $src_dir."/".$file, FTP_BINARY); // put the files 
          echo "creat files::: <b><u>".$dst_dir."/".$file ." </u></b><br>"; 
        } 
      } 
      ob_flush() ; 
      sleep(1);  
    } 
    $d->close(); 
  } 
  return "<br><br><font size=3><b>All Copied  ok </b></font>"; 
}

但是可以在不迭代文件的情况下传输整个文件夹吗?因为我有大约100多个文件,而PHP需要花费大量时间进行传输。

有没有办法提高转移速度?

1 个答案:

答案 0 :(得分:0)

不存在普通FTP服务器支持的其他通用方式。

除了您在本地打包文件(zip,gzip等)外,上传它们并远程解压缩。

但是,如果您只有FTP访问权限,则无论如何都无法远程解压缩它们。除非FTP服务器明确允许。允许您执行任意远程shell命令(通常不允许)或使用专有的“unpack”扩展(很少有服务器支持)。

FTP协议通常非常低效,无法传输大量小文件,因为每次文件传输都会产生相当大的开销,无法打开单独的数据传输连接。