我試圖創建一個目錄中的所有文件(及其大小)的列表包括子目錄中的所有內容。遞歸掃描目錄和子目錄通過FTP與PHP
這些文件位於遠程服務器上。所以我的腳本通過FTP連接,然後使用ftp_chdir
運行遞歸函數來遍歷每個目錄。
如果還有其他方法可以做到這一點,我樂於接受建議。
$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, ".");
該腳本工作得很好,但現在它不工作。 PHP返回一個錯誤ftp_chdir
。唯一改變的是我們已經將更多文件添加到服務器。如果我在子目錄上運行該腳本,該腳本將起作用。但是,如果我運行它「。」它失敗。那麼這是否因爲文件和子目錄太多而失敗?
我認爲你不能在遠程服務器上運行任何東西? (也沒有PHP腳本或如此) – thejh 2010-11-05 22:41:15