Php 在不遍历所有文件的情况下将文件夹传输到FTP服务器

Php 在不遍历所有文件的情况下将文件夹传输到FTP服务器,php,ftp,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); f

我正在尝试使用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>"; 
}
函数ftp_copyAll($conn_id,$src_dir,$dst_dir){
如果(is_dir($dst_dir)){
return“
目录$dst_目录已存在
”; }否则{ $d=dir($src_dir); ftp_mkdir($conn_id,$dst_dir); echo“创建目录$dst_目录
”; 而($file=$d->read()){//则对目录中的每个文件执行此操作 如果($file!=“&&&$file!=”){//以防止无限循环 如果(is_dir($src_dir./“$file)){//如果它是一个目录,请执行以下操作 ftp_copyAll($conn_id,$src_dir.//“$file,$dst_dir.//“$file);//递归部分 }否则{ $upload=ftp_put($conn_id,$dst_dir.//“$file,$src_dir.//“$file,ftp_BINARY);//放置文件 echo“创建文件::”$dst_dir./“$file.”
”; } } ob_flush(); 睡眠(1); } $d->close(); } 返回“

所有已复制的文件都正常”; }
但是,是否可以在不遍历文件的情况下传输整个文件夹?因为我有大约100多个文件,PHP在传输过程中花费了很多时间


有什么方法可以提高传输速度吗?

没有通用FTP服务器支持的其他通用方法


除了本地打包文件(zip、gzip等),还可以远程上传和解包

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


FTP协议对于传输大量的小文件通常效率很低,因为每次文件传输都有相当大的开销来打开单独的数据传输连接