我尝试在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
如何解决?
您必须在curl中设置KEEPALIVE
和KEEPIDLE
参数。
过去也曾在枪口社区对此进行讨论,这就是解决之道。由于Guzzle用户会在引擎盖下卷曲,因此该解决方案也应符合您的需求。
CURLOPT_TCP_KEEPALIVE => 10,
CURLOPT_TCP_KEEPIDLE => 10