2015-06-23 60 views
0

我试图使用PHP将整个文件夹传输到FTP服务器。将文件夹传输到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正在花费大量时间进行传输。

有什么办法可以提高转移速度吗?

回答

0

不,没有其他普通FTP服务器支持的通用方式。


除了你在本地包装的文件(ZIP,gzip的等),上传到远程和解压。

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


FTP协议通常是用于传输大量的小文件非常低效的,因为每个文件传输具有相当的开销用于打开一个单独的数据传输连接。

相关问题