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メソッドを び します.