get_headers() 判断微信头像时,执行超时原因分析?

问题遇到的现象和发生背景

linux 7.* php7.4.3

问题相关代码,请勿粘贴截图

测试代码:


$imgUrl = 'https://thirdwx.qlogo.cn/mmopen/vi_32/gSVesk3E067jKuOHe9Xic1D6P0rnaHicrrlLb8icxwUIqWIeib8KthlBQPP03zuLdVHibNm1E7ga1LvZPQbUmaq8WiaQ/132';
set_time_limit(2);  //这个加这里也没起作用
$heads = get_headers($imgUrl, 1);       
//本地打印正常,线上环境不知什么原因,请求超时,无法打印内容
var_dump($heads) ;

普通图片执行正常,但执行微信头像这个链接时在本地测试正常,线上环境测试执行超时,不知何故?执行以上get_headers()代码时,执行超时,程序一直未返回结果,停留在请求内,请解答

运行结果及报错内容

执行超时……

我的解答思路和尝试过的方法

暂未扎到解决办法

我想要达到的结果

希望可以请求微信头像图片,并返回正确200值

get_headers 方法代码发出来看看

获取远程URL头信息。如果遇到需要设置超时的话, 需要使用如下函数。

function get_header_curl($url, $time_out_sec=3) {
    if(!function_exists('curl_init')) {
        return false;
    }
    if(empty($url)) {
        return false;
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER,true); // 是否获取 header 头信息
    curl_setopt($ch, CURLOPT_NOBODY, true); // 是否不需要 body 数据。是 true, 否 false 会获取 body 数据
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($ch, CURLOPT_TIMEOUT, $time_out_sec); // 设置cURL允许执行的最长秒数。
    if (($returnData = curl_exec($ch)) === false) {
        return false;
    }
    curl_close($ch);
    if($returnData) {
       $arr = explode("\r\n", $returnData); // 分隔数据为数组数据。
       $arr = array_filter($arr);
       return $arr;
    }
    return false;
}

使用方法:
$imgUrl = 'https://thirdwx.qlogo.cn/mmopen/vi_32/gSVesk3E067jKuOHe9Xic1D6P0rnaHicrrlLb8icxwUIqWIeib8KthlBQPP03zuLdVHibNm1E7ga1LvZPQbUmaq8WiaQ/132';
var_dump(get_header_curl($imgUrl , 1));
var_dump(get_header_curl($imgUrl , 3));

如有帮助,请点击我评论上方【采纳该答案】按钮支持一下。

可能是数据库读取超时导致的,是否设置了相关的权限开放