2015-06-23 61 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協議通常是用於傳輸大量的小文件非常低效的,因爲每個文件傳輸具有相當的開銷用於打開一個單獨的數據傳輸連接。

相關問題