我有一个while循环,在该循环中我将一个PUT请求发送到google firebase REST api。它运行得很好,但是如果我想把事情搞定(while循环等待每一轮循环的卷曲响应,有时非常慢,超过200ms),我正在尝试添加CURLOPT_TIMEOUT_MS
和设置为1毫秒。
TLDR; 添加行后
curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 1L);
我的卷发不再向服务器发送任何内容了。或者服务器是否以某种方式强制客户端从请求中接收返回值?
答案 0 :(得分:1)
如果没有在 1毫秒内完成操作,则告诉curl操作失败。没有多少请求快速完成,特别是如果您使用DNS或仅通过Internet使用连接,则不会。
所以是的,大多数转移只会返回CURLE_OPERATION_TIMEDOUT
(28)而没有内容。
答案 1 :(得分:0)
这是CURL的错误。
如果您的超时设置小于1s,则会直接返回错误。
解决方案是:
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);
conn
是CURL的指针,例如:
CURL *conn = NULL;
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);