服务器上有接近4000个文件。
本地是用XAMPP来配置的,附图是程序运行时XAMPP控制面板显示的状态,Port位置一直在跳,数值一直很大,运行失败后就一直卡着,页面也不跳提示,也是一直卡着
public function back(){
$id = I('id');
$model = M('ftp');
$info = $model->where('id='.$id)->find();
dump($info);
ini_set('max_execution_time',10000);
$this->ftp = new \Org\Util\Ftp();//实例化对象
$data['server'] = $info['ftp_ip'];//服务器地址(IP or domain)
$data['username'] = $info['ftp_user'];//ftp帐户
$data['password'] = $info['ftp_password'];//ftp密码
$data['port'] = $info['ftp_port'];//ftp端口,默认为21
$data['pasv'] = true;//是否开启被动模式,true开启,默认不开启
$data['ssl'] = false;//ssl连接,默认不开启
$data['timeout'] = 60000;//超时时间,默认60,单位s
$ftp->mode = FTP_ASCII;
$this->local_dir = 'back/'.$info['domain'];
if(!is_dir($this->local_dir)){
mkdir($this->local_dir);
}
if($this->ftp->start($data)){
$remotedir = $this->local_dir.$info['dir']; //服务器目录
if(!is_dir($remotedir)){
mkdir($remotedir);
}
//dump($this->ftp);
$this->download($info['dir']);
//dump($this->$file);
}else{
$this->error('FTP无法连接');
}
}
public function download($dir){
//$ftp->chdir($remotedir)
$dirlist = $this->ftp->nlist($dir);
foreach($dirlist as $val){
//echo $val;
if($this->ftp->chdir($val)){
$ldir = $this->local_dir.dirname($val);
$localdir = $ldir.'/'.basename($val);
//dump($localdir);
if(!is_dir($localdir)){
mkdir($localdir);
}
//dump(dirname($val));
$this->download($val);
}else{
$localdir = $this->local_dir.dirname($val);
//$remote = $val;
$local = $localdir.'/'.basename($val);
dump($val);
dump($this->ftp->down($val,$local));
}
}
unset($dirlist);
}
QQ图片20151029165608.png
( 14.77 KB 下载:13 次 )
最佳答案