TypechoJoeTheme

Dcr163的博客

统计

在PHP中下载网络图片尽量用CURL,不要用file_get_content

2025-05-15
/
0 评论
/
11 阅读
/
正在检测是否收录...
05/15

例如:https://thirdwx.qlogo.cn/mmopen/vi_32/jDiauSBiauFCicDp9CBMjqNLfuaUibXQHciaaESNwvZhK2FQXTBJcvYwYcyOWrOmKO7otewTphq59g4J2GPfxE8DdNQ/132

如果用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获取图片,基本不影响程序使用,体验感大大提升。

CURLfile_get_contents
朗读
赞(0)
版权属于:

Dcr163的博客

本文链接:

https://www.dcr163.cn/736.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. https://www.triptipedia.com/user/phmapaladnet
    2025-05-08
  2. https://Sites.google.com/view/vavada-online-casino
    2025-04-12
  3. https://x.com/jeetbuzzcom
    2025-04-07
  4. prozone.cc alternative
    2025-03-19
  5. urgent delivery
    2025-03-16

标签云