मेरे पास CURLOPT_CONNECTTIMEOUT_MS = 200 और CURLOPT_TIMEOUT_MS = 70 एमएस सेट है। लेकिन मैं लगभग 220 एमएस होने के लिए CURLINFO_TOTAL_TIME देख रहा हूं।कर्ल ठीक से समय नहीं निकाल रहा
libcurl दस्तावेज़ के अनुसार, CURLOPT_TIMEOUT_MS में कनेक्ट टाइमआउट भी शामिल है। तो मूल रूप से मेरे कर्ल कॉल कुल समय 70 एमएस से अधिक नहीं लेना चाहिए। लेकिन यह नियंत्रण वापस वापस क्यों ले रहा है?
क्या कोई इस व्यवहार को समझा सकता है।
मैं कर्ल 7.19_02 सी ++ लाइब्रेरी का उपयोग कर रहा हूं।
यहाँ मेरी कोड
CURL * curl;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl,CURLOPT_CONNECTTIMEOUT_MS,200);
curl_easy_setopt(curl,CURLOPT_TIMEOUT_MS,70);
curl_easy_setopt(curl, CURLOPT_HEADER, 0);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
double tt = 0.0;
double ns = 0.0;
double ct = 0.0;
double pt = 0.0;
double st = 0.0;
curl_easy_perform(curl);
int curlRC = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &tt);
curlRC = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &ns);
curlRC = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &ct);
curlRC = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &pt);
curlRC = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &st);
cout << "Curl timing info: Total: " << tt << endl << " Lookup: "<< ns << endl << " Connect: " << ct << "\n" << "pre transfer: " << pt << endl << "start transfer: " << st <<endl;
समय की जानकारी मुझे मिल गया के रूप में नीचे है। बाहर इस जाँच करें
कर्ल समय की जानकारी: कुल: 0,216793
लुक: 0,000999
कनेक्ट: 0,023199
पूर्व स्थानांतरण: 0,023213
शुरू हस्तांतरण: 0,216667
तो मुद्दा यह है कि, पूर्व हस्तांतरण और स्थानांतरण शुरू करने के बीच क्या हो रहा है?
DNS रिज़ॉल्यूशन शायद – Brad
में कौन से कर्ल संस्करण का उपयोग कर रहे हैं, "उप-सेकंड टाइमआउट सुधार" में हो सकता है? –
क्या आप में से कोई भी समझा सकता है, संभावित कारण क्या हो सकता है। यह बहुत अच्छा होगा अगर इसे HTTP रिक के लिए उठाए गए समय को विभाजित करके समझाया जा सके। – naveen