用ftp从服务器上把网站文件备份到本地出错

浏览:539 发布日期:2015/10/29 分类:求助交流
程序运行经常只下载一部分,但是有时候运行却能全部下载完。
服务器上有接近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 次 )

最佳答案
评论() 相关
后面还有条评论,点击查看>>