如何在PHP上修复错误“ cURL错误#:关闭传输,并保留剩余的未读数据”

问题描述 投票:0回答:1

我尝试在php上卷曲,并且在Lumen 5. *上具有curl语法,但是如果数据很大,则无法运行

        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 60,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'GET',
            CURLOPT_HTTPHEADER => array(
                'Cache-Control: no-cache',
                'Content-Type: application/json',
                'Authorization: Bearer blablabla' 
            ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            echo 'cURL Error #:' . $err;
        } else {
            if ($this->isJSON($response) == False) {
                return $response;
            }
            return json_decode($response, true);
        }

但是如果数据很大,则会显示错误

cURL Error #:transfer closed with outstanding read data remaining

如何解决?

php laravel curl laravel-5 lumen
1个回答
0
投票

您必须在curl中设置KEEPALIVEKEEPIDLE参数。

过去也曾在枪口社区对此进行讨论,这就是解决之道。由于Guzzle用户会在引擎盖下卷曲,因此该解决方案也应符合您的需求。

    CURLOPT_TCP_KEEPALIVE => 10,
    CURLOPT_TCP_KEEPIDLE => 10

Source

© www.soinside.com 2019 - 2024. All rights reserved.