<?php $remote_addr = 'xx.xx.xx.xx'; //remote远程
$user_name = 'xx';
$user_pwd = 'xxxxxxx';
$dir_prefix = 'E:\\mail\\'. date('Y-m-d'); //prefix前缀
recursive_mkdir($dir_prefix); //recursive递归
$cid = ftp_connect($remote_addr) or die("Couldn't connect to server"); //建立ftp新连接
if (@ftp_login($cid, $user_name, $user_pwd))
{
$filelist = filecollect($cid); //collect收集
foreach($filelist as $remote_file)
{
$local_file = $dir_prefix . substr($remote_file,1); //local_file 本地文件
echo $local_file .'<br>';
fileget($cid,$local_file,$remote_file);
}
}
// close the connection
ftp_close($cid);
//递归方式读取目录中的文件
function filecollect($cid,$dir='.')
{
static $flist=array();
if ($files = ftp_nlist($cid,$dir)) //ftp_nlist返回给定目录的文件列表(ftp连接标识符,检查目录)
{
foreach ($files as $file)
{
if (ftp_size($cid, $file) == "-1")
{
filecollect($cid,$file);
}
else
{
$flist[] = $file;
}
}
}
return $flist;
}
//创建目录并下载文件
function fileget($cid,$local_file, $server_file)
{
//目录不存在就创建
if (!file_exists (dirname($local_file)))
{
if (!@mkdir (dirname($local_file), 0777))
{
die($local_file."目录创建失败!");
}
}
if (ftp_get($cid, $local_file, $server_file, FTP_BINARY))
{
echo "传输成功\n";
}
else
{
echo "传输失败\n";
}
//chmod($local_file,0666);
}
function recursive_mkdir( $folder )
{
$folder = explode( DIRECTORY_SEPARATOR , $folder );
$mkfolder = '';
for( $i=0 ; isset( $folder[$i] ) ; $i++ )
{
$mkfolder .= $folder[$i];
if( !is_dir( $mkfolder ) )
mkdir( "$mkfolder" , 0777,true);
$mkfolder .= DIRECTORY_SEPARATOR;
}
} ?> 远程服务器ftp的根目录下有11个文件夹大概,下载后只有7个,请问是什么原因导致呢?
最开始有一个php反应时间的秒数我给改成了3600
有时就能完整下载,不知有函数或者.ini文件里面控制下载文件大小或者数量么?
报错误是Transfer OK 转移成功,但是为什么算是错误呢?
例如Warning: ftp_get() [function.ftp-get]: Transfer OK in D:\wamp\www\mail_bak.php on line 63
传输失败 E:\mail\2011-09-08/zhongxu/Sent/1315191073.4457.541024,S=513590.0.S