【发布时间】:2011-05-05 20:54:36
【问题描述】:
我正在尝试创建一个目录中所有文件(及其大小)的列表,包括子目录中的所有内容。
文件位于远程服务器上。所以我的脚本通过 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脚本左右)
标签: php recursion ftp directory