问题描述:
使用微信api获取微信头像的时候,想将其下载到本地,使用传统的file_get_contents的时候,发现加载时间特别长。
解决代码:
public static function remote2local($url = '', $keypath = '')//$localpath其实为urlpath
{
global $empire, $dbtbpre, $class_r, $public_r, $post, $addon_name, $addon_set, $xppset, $ga;
if (empty($url)) {
return false;
}
$ta = explode('.', $url);
//先要对比一下两个ext是否相同
$ext1 = end($ta);
$ext1 = trim(strtolower($ext1));
$ealist = array('jpg', 'jpeg', 'png', 'gif', 'mp4', 'mp3');
if (!in_array($ext1, $ealist)) {//如果不存在
$ext1 = 'png';
}
if (empty($keypath)) {
$urlpath = '/upfiles/addon/' . $addon_name . '/remote2local/' . date('Ymd') . '/' . lsk::makeAppRand() . '.' . $ext1;
} else {
$keypath = ltrim($keypath, '/');
$urlpath = '/upfiles/addon/' . $addon_name . '/remote2local/' . $keypath;
}
$filepath = LSK_PATH . ltrim($urlpath, '/');
lsk::mkdirByFilepath($filepath);
//start
set_time_limit(0);
$url = trim($url);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_ENCODING, "");
$content = curl_exec($curl);
curl_close($curl);
file_put_contents($filepath, $content);
return $urlpath;
}