http-client 是不是不支持HEAD请求

Youfeed

问题描述

使用 http-client 发起 HEAD请求验证文件是否存在,发现全是超时,改成GET就行?

程序代码

    function headRequest(string $url, array $headers = [])
    {
        static $httpClient;
        if (!$httpClient) {
            $httpClient = new Workerman\Http\Client([
                'max_conn_per_addr' => 128, // 每个域名最大并发连接
                'keepalive_timeout' => 15,  // 长连接超时时间
                'connect_timeout' => 10,  // 连接超时(HEAD请求轻量,缩短为10s)
                'timeout' => 10,  // 响应超时(缩短为10s)
                'context'=>[
                    'ssl'=>[
                        'verify_peer'=>false,
                        'verify_peer_name'=>false,
                    ]
                ]
            ]);
        }
        // 发起请求
        try {
            // 发起HEAD请求,指定HTTP/1.1
            $response = $httpClient->request($url, [
                'method'  => 'head',
                'version' => '1.1',
                // 'headers' => $headers
            ]);
            $response->getBody();
            return ['code'=>$response->getStatusCode(),'headers' => $response->getHeaders()];
        } catch (\Throwable $th) {
            //throw $th;
            return ['err'=>500,'msg'=>$th->getMessage()];
        }
    }

报错信息

msg: "read 116.153.78.164:443 timeout after 10 seconds"

操作系统及workerman/webman等框架组件具体版本

"workerman/workerman": "5.1.6",
"workerman/webman-framework": "~2.1",
"workerman/http-client": "^3.0",
"revolt/event-loop": "^1.0",
117 1 0
1个回答

更新 workerman/http-client 到3.0.6
composer require workerman/http-client ^3.0.6

  • 暂无评论
🔝