php - curl 错误 18 - 传输已关闭,剩余未完成的读取数据

标签 php curl

当使用 curl 从 URL 检索数据时,我有时(在 80% 的情况下)得到

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

然后丢失了部分返回的数据。奇怪的是,当 CURLOPT_RETURNTRANSFER 设置为 false 时,这永远不会发生,即 curl_exec 函数不返回数据而是直接显示内容。

可能是什么问题?我可以设置一些选项来避免这种行为吗?

最佳答案

错误字符串与 libcurl 所看到的完全相同:因为它正在接收分 block 编码流,它知道何时在一个 block 中还有数据要接收。当连接关闭时,libcurl 知道最后收到的 block 是不完整的。然后你会得到这个错误代码。

您无法在未修改请求的情况下避免此错误,但您可以尝试通过发出 HTTP 1.0 请求来解决此错误(因为那时不会发生分 block 编码)但是事实上,这很可能是服务器或您的网络/设置中的缺陷。

关于php - curl 错误 18 - 传输已关闭,剩余未完成的读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759956/

相关文章:

linux - 如何使用linux命令行计算某些网页上的图像加载时间?

javascript - Google Visualization 的 Json 到 DataTable 错误输出

php - Connection.php 行 647 : SQLSTATE[42000]: Syntax error or access violation 中的 Laravel QueryException

php - Laravel Schedule withoutOverlapping() 不适用于 runInBackground()

php - Apache 使用过多的 CPU

node.js - 解码特殊西里尔字母

php - 我需要帮助使用 PHP 对使用 OAUTH 2 的 API 进行身份验证

带有重定向的python请求

linux - 在 bash 变量中保存 URL 会导致 curl 失败

php - 循环内的 SUM - MYSQL