Shadow
在PHP中下载网络图片尽量用CURL,不要用file_get_content
如果用file_get_contents
函数下载保存,会影响程序的运行速度,快则几秒,多则几十秒
这里建议用CURL操作:
/**
* 下载头像
* @param $url
* @param $save_path
* @param $openid
* @return false|string[]
*/
private function saveWechatAvatar($url, $save_path, $openid)
{
// 创建保存目录
$absolute_path = $save_path;
if (!file_exists($absolute_path)) {
mkdir($absolute_path, 0755, true);
}
$filename = $openid . '.jpg';
$file_path = $absolute_path . '/' . $filename;
if (is_file($file_path)) {
return [
'file_path' => $file_path,
'filename' => $filename,
];
}
// 配置 CURL
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => 'gzip', // 压缩传输优化
CURLOPT_HTTPHEADER => [
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
'Accept-Encoding: gzip, deflate'
],
CURLOPT_SSL_VERIFYPEER => false, // 跳过 SSL 验证
CURLOPT_TIMEOUT => 10 // 设置超时时间
]);
$image_data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 保存图片
if ($http_code == 200 && !empty($image_data)) {
return file_put_contents($file_path, $image_data) ? [
'file_path' => $file_path,
'filename' => $filename,
] : false;
}
return false;
}
实际应用CURL获取图片,基本不影响程序使用,体验感大大提升。
Dcr163的博客
https://www.dcr163.cn/736.html(转载时请注明本文出处及文章链接)