第一题(FTP方式遍历linux服务器)
时间:2008-10-08
来源:互联网
这道题大家一般应该大都写的遍历win32本地磁盘上信息,我就写一个遍历linux的ftp服务器上信息的吧
[php]
/**
*
* 功能: 遍历ftp服务器上的所有文件(linux)
* $ftp_id: ftp链接句柄
* $dir_address: 要遍历的目录
* 返回值: 二维数组 | false
*
*/
function listFilesOnFTP($ftp_id, $dir_address)
{
$fileslist = array();
$count = 0;
$contents = ftp_rawlist($ftp_id, $dir_address);
if(!is_array($contents)) return false;
foreach($contents as $entry)
{
$entry = str_replace(" 0 ", " * ", $entry);
$pieces = strtok($entry, " ");
$i = 0;
while($pieces)
{
$i++;
if($i == 1) $type = $pieces; //获取文件属性
if($i == 5) $size = $pieces; //获取文件大小
if($i == 9) $name = $pieces; //获取文件名
if($i > 9) $name = $name." ".$pieces; //获取完整名称
$pieces = strtok(" ");
}
$address = $dir_address.$name; //文件的完整地址
if($type[0] == 'd') //如果该文件是目录
{
$tmp = listFilesOnFTP($ftp_id, $dir_address.$name.'/'); //递归
$fileslist[] = $tmp;
$count = $count + count($tmp);
}else{ //如果不是目录,逐项添加到数组
$fileslist[$count][] = $name;
$fileslist[$count][] = $type;
$fileslist[$count][] = $size;
$fileslist[$count][] = $address;
}
$count++;
}
return $fileslist;
}
[/php]
$ftp_server = "127.0.0.1";
$conn_id = ftp_connect($ftp_server);
$ftp_user = "username";
$ftp_pass = "password";
ftp_login($conn_id, $ftp_user, $ftp_pass);
$dir_address = '/dir/'; //要遍历的目录
var_dump(listFilesOnFTP($conn_id, $dir_address));
[php]
/**
*
* 功能: 遍历ftp服务器上的所有文件(linux)
* $ftp_id: ftp链接句柄
* $dir_address: 要遍历的目录
* 返回值: 二维数组 | false
*
*/
function listFilesOnFTP($ftp_id, $dir_address)
{
$fileslist = array();
$count = 0;
$contents = ftp_rawlist($ftp_id, $dir_address);
if(!is_array($contents)) return false;
foreach($contents as $entry)
{
$entry = str_replace(" 0 ", " * ", $entry);
$pieces = strtok($entry, " ");
$i = 0;
while($pieces)
{
$i++;
if($i == 1) $type = $pieces; //获取文件属性
if($i == 5) $size = $pieces; //获取文件大小
if($i == 9) $name = $pieces; //获取文件名
if($i > 9) $name = $name." ".$pieces; //获取完整名称
$pieces = strtok(" ");
}
$address = $dir_address.$name; //文件的完整地址
if($type[0] == 'd') //如果该文件是目录
{
$tmp = listFilesOnFTP($ftp_id, $dir_address.$name.'/'); //递归
$fileslist[] = $tmp;
$count = $count + count($tmp);
}else{ //如果不是目录,逐项添加到数组
$fileslist[$count][] = $name;
$fileslist[$count][] = $type;
$fileslist[$count][] = $size;
$fileslist[$count][] = $address;
}
$count++;
}
return $fileslist;
}
[/php]
$ftp_server = "127.0.0.1";
$conn_id = ftp_connect($ftp_server);
$ftp_user = "username";
$ftp_pass = "password";
ftp_login($conn_id, $ftp_user, $ftp_pass);
$dir_address = '/dir/'; //要遍历的目录
var_dump(listFilesOnFTP($conn_id, $dir_address));
作者: linvo 发布时间: 2008-10-08
这个思路我都没想到。楼主脑子确实挺灵活。我没想到用FTP。
不错的说。
不错的说。
作者: kuhanzhu 发布时间: 2008-10-08
粉不错嘀说,不过,如果用FTP遍历一个PHPCMS的目录结构,那速度…………不敢想象的说~~
作者: 飞翔de希望 发布时间: 2008-10-08
原帖由 飞翔de希望 于 2008-10-8 16:40 发表
粉不错嘀说,不过,如果用FTP遍历一个PHPCMS的目录结构,那速度…………不敢想象的说~~
呵呵,这主要可以用于遍历ftp服务器上的资源粉不错嘀说,不过,如果用FTP遍历一个PHPCMS的目录结构,那速度…………不敢想象的说~~
如果可以本地操作,当然不会用它啦

作者: linvo 发布时间: 2008-10-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28