PHP ile FTP yoluyla Recursively tarama dizini ve alt dizinleri

0 Cevap php

I'm trying create a list of all files (and their sizes) in a directory including everything within the sub-directories. The files are on a remote server. So my script connects through FTP, then runs a recursive function using ftp_chdir to go through each directory.

Bunun başka bir yolu varsa, ben önerilere açığım.

$flist = array();

function recursive_list_dir($conn_id, $dir, $parent = "false") {
 global $flist;
 ftp_chdir($conn_id, $dir) or die("Fudgeballs: ".$parent."/".$dir);
 $list = array();
 $list = ftp_rawlist($conn_id, ".");

 if($parent != "false") { $dir = $parent."/".$dir; }

 for($x = 0; $x < count($list); $x++) {
  $list_details = preg_split("/[\s]+/", $list[$x]);
  $file = $list_details[3];
  $size = $list_details[2];

  if(!strstr($file, ".")) { // if there's no dot (.), then we assume it's a directory (is there a command similar to "is_dir" for FTP? that would be more fail proof?)
   recursive_list_dir($conn_id, $file, $dir);
  }
  else { $flist[] = $dir."@".$file."@".$size; }
 }
 ftp_chdir($conn_id, "..");
}

recursive_list_dir($conn_id, ".");

Komut bir noktaya kadar iyi çalıştı, ama şimdi çalışmıyor. PHP ftp_chdir bir hata döndürür. Değişen tek şey, biz sunucuya daha fazla dosya eklediğiniz olmasıdır. Ben bir alt-dizinde çalıştırmak eğer komut çalışır. Ama ben "." Çalıştırırsanız başarısız. Çok sayıda dosya ve alt dizinleri vardır çünkü bu kadar başarısız olduğunu?

Teşekkür ederim. Sizin yardım ve fikir çok takdir edilmektedir.

0 Cevap