dongmaobeng7145 2019-03-30 09:54 采纳率: 0%
浏览 2237

cURL错误18:传输关闭,剩余未完成的读取数据

我用的是Laravel5.7和Guzzle的最新版本,并且正在尝试向外部网站发出批处理池请求。到目前为止,它一直运行良好,但由于获取的数据变得更大,在等待了整整2分钟之后,我开始得到这些错误:

cURL error 18: transfer closed with outstanding read data remaining

我使用的Guzzle GUSOST并发池请求:

new Pool($client, $requests($urls, $headers), ...)

我要发送的头只包括Authorization头,没有指定任何其他内容。

我在Goolge上寻找解决方案,但似乎找不到任何与这个问题相关的东西。我发现它可能是跟Content-length有关。有人知道这里有什么问题吗?如果你需要更多的信息,请在下面的评论中询问。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 16:10
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于CURL传入的超时设置导致的。当你的服务器端无法处理你传给它的数据时,CURL会抛出一个异常。在这种情况下,它可能会报告为"transfer closed with outstanding read data remaining"。

    要解决这个问题,你需要调整你的CURL配置以允许更长的超时时间。例如:

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 设置超时时间为60秒
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁止证书验证
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 禁止SSL验证
    

    然后,你可以再次尝试发出请求。

    注意:这可能不会立即解决问题,因为你的服务器可能仍然无法处理你的请求。但是,这个设置应该至少让你能够发送更多的数据。

    评论

报告相同问题?