我有一个段循环,在该循环中,我将PUT请求发送到Google Firebase REST API中。它运行效果很好,但是如果我想将事情固定(While loop等待curl响应的每一轮,有时非常慢,超过200ms),我会尝试添加CURLOPT_TIMEOUT_MS
并将其设置为低1毫秒。
tldr;添加行
之后 curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 1L);
我的卷发不再将任何东西发送给服务器。或服务器以某种方式迫使客户端从请求接收返回值?
您告诉curl如果操作未完成 1毫秒。很快就完成了很多请求,尤其是当您使用DNS或仅在Internet上使用连接。
是的,大多数转移将只返回没有内容的CURLE_OPERATION_TIMEDOUT
(28)。
这是卷曲的错误。
如果您的超时设置小于1S,则将直接返回错误。
解决方案是:
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);
conn
是卷曲的指针,例如:
CURL *conn = NULL;
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);