thinkphp5.1環のチャットの記録、帰ってくる住所によって(遠隔)をダウンロードして解凍します

6175 ワード

client_id = '';      //app id
        $this->client_secret = '';  //app   
        $this->org_name = '';       //  id
        $this->app_name = '';       //    
        $this->url = 'https://a1.easemob.com/';            //  
        //=============================        ========================//
        $option = array(
            'client_id' => $this->client_id,
            'client_secret' =>$this->client_secret,
            'org_name' => $this->org_name,
            'app_name' => $this->app_name,
            'url' => $this->url
        );
        $this->Ease = new Easemobs($option);
    }

    /*
     *       
     *     
     * 2018-01-31
     * mzj
     * @parem : $time 2018013014     
     * @parem : $path        
     * */
    public function downContent($time,$path){
        $result = $this->Ease->getChatTime($time);//      
        //    
        $path = $path ? $path : '../down/';
        if(isset($result['error'])) return '       ';
        if(!isset($result['data'][0]['url'])) return '       ';
        $downData = $this->httpcopy($result['data'][0]['url'],$path);
        if($downData == 'fail') return '    ';
        $ungz = $this->unzipGz($downData);
        if($ungz == 'fail') return '    ';
        if(!file_exists($path.''.$ungz)) return '     ';
        $txt = file_get_contents($path.''.$ungz);
        if(empty(trim($txt))) return '       ';
        $aa = explode("
",trim($txt)); foreach($aa as $key => $val){ $info[$key] = json_decode($val,true); } echo "
";
        print_r($info);die;
    }

    /*
     *       
     * mzj
     * 2018-01-31
     * */
    function httpcopy($url,$path, $files="", $timeout=60) {
        $path = $path ? $path : '../down/';
        $file_a = empty($files) ? pathinfo($url,PATHINFO_BASENAME) : $files;
        //  
        $file = explode('?',$file_a)[0];
        $dir = pathinfo($file,PATHINFO_DIRNAME);
        !is_dir($dir) && @mkdir($dir,0755,true);
        $url = str_replace(" ","%20",$url);

        if(!function_exists('curl_init')) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            $temp = curl_exec($ch);
            if(@file_put_contents($path.''.$file, $temp) && !curl_error($ch)) {
                return $path.''.$file;
            } else {
                return 'fail';
            }
        } else {
            $opts = array(
                "http"=>array(
                    "method"=>"GET",
                    "header"=>"",
                    "timeout"=>$timeout
                )
            );
            $context = stream_context_create($opts);
            if(@copy($url, $path.''.$file, $context)) {
                //$http_response_header
                return $path.''.$file;
            } else {
                return 'fail';
            }
        }
    }

    /*
     *   gz   
     * mzj
     * 2018-01-31
     * @parem:gz_file       
     * */
    function unzipGz($gz_file){
        $buffer_size = 4096; // read 4kb at a time
        $out_file_name = str_replace('.gz', '', $gz_file);
        $file = gzopen($gz_file, 'rb');
        $out_file = fopen($out_file_name, 'wb');
        $str='';
        if(!gzeof($file)) {
            fwrite($out_file, gzread($file, $buffer_size));
            fclose($out_file);
            gzclose($file);
            return $out_file_name;
        } else {
            return 'fail';
        }
    }


}

コードでは、
$result = $this->Ease->getChatTime($time);
$this->Ease = new Easemobs($option);

の2 は demoの を して、チャットの 、 がダウンロードしたのはその がありません.だから で1つ しました
コードをdemoに すればいいです
function getChatTime($time){
   $url=$this->url.'chatmessages/'.$time;
   $header=array($this->getToken());
   $result=$this->postCurl($url,'',$header,"GET");
   return $result;
}

くこともできるhttp://blog.csdn.net/dear_zx/article/details/79300234ダウンロードします.
:このコードはmodelレイヤです.controllerはdownContentメソッドを び します.