2010-05-13 10 views
12

मैं PHP में एक curl कॉल के साथ किसी समस्या को ट्रैक करने का प्रयास कर रहा हूं। यह हमारे परीक्षण पर्यावरण में ठीक काम करता है, लेकिन हमारे उत्पादन वातावरण में नहीं। जब मैं curl फ़ंक्शन निष्पादित करने का प्रयास करता हूं, तो यह बस लटकता है और कभी जवाब नहीं देता है। मैंने कमांड लाइन से कर्ल कनेक्शन बनाने का प्रयास किया है और वही होता है।मैं कैसे पता लगा सकता हूं कि कर्ल लटक रहा है और उत्तरदायी क्यों है?

मुझे आश्चर्य है कि कर्ल लॉग करता है कि कहीं क्या हो रहा है, क्योंकि मैं यह नहीं समझ सकता कि कमांड मंथन और मंथन के दौरान क्या हो रहा है। क्या किसी को पता है कि कोई लॉग है जो ट्रैक करता है कि वहां क्या हो रहा है?

मुझे लगता है कि यह कनेक्टिविटी के मुद्दे हैं, लेकिन हमारे आईटी लड़के जोर देते हैं कि मुझे बिना किसी समस्या के इसे एक्सेस करने में सक्षम होना चाहिए। कोई विचार? मैं सेंटोस और PHP 5.1 चला रहा हूँ।

अपडेट: वर्बोज़ मोड का उपयोग करके, मुझे 28 "कनेक्ट() टाइम आउट" त्रुटि मिली है। मैंने टाइमआउट को 100 सेकंड तक विस्तारित करने की कोशिश की, और अधिकतम-लालसा को 5 तक सीमित कर दिया, कोई बदलाव नहीं हुआ। मैंने बॉक्स को पिंग करने की कोशिश की, और एक टाइमआउट भी मिला। इसलिए मैं इसे वापस आईटी में पेश करने जा रहा हूं और देख सकता हूं कि वे इसे फिर से देखेंगे या नहीं। सभी मदद के लिए धन्यवाद, उम्मीद है कि मैं आधे घंटे में समाचार के साथ वापस आऊंगा कि यह उनकी समस्या थी।

अपडेट 2: मेरा बॉक्स बाहरी आईपी पते के साथ सर्वर नाम को हल कर रहा है। जब आईटी ने मुझे आंतरिक आईपी पता दिया और मैंने इसे कर्ल कॉल में बदल दिया, तो सबकुछ बढ़िया काम करता था। सभी की मदद के लिए धन्यवाद।

उत्तर

15

अपने php में, आप CURLOPT_VERBOSE चर सेट कर सकते हैं:

curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 

यह तो लॉग STDERR के लिए, या फाइल करने के लिए निर्दिष्ट CURLOPT_STDERR (जो एक फ़ाइल सूचक ले जाता है) का उपयोग कर:

curl_setopt($curl, CURLOPT_STDERR, $fp); 

कमांड लाइन से, आप निम्न स्विच का उपयोग कर सकते हैं:

  • --verbose और अधिक रिपोर्ट करने के लिए कमांड लाइन
  • --trace <file> या --trace-ascii <file> को जानकारी एक फाइल करने के लिए पता लगाने के लिए

आप --trace-time उपयोग कर सकते हैं समय टिकटों पहले जोड़ें करने के लिए वर्बोस के लिए/फ़ाइल आउटपुट

+0

ठीक है, जिसने मुझे थोड़ी अधिक जानकारी दी, लेकिन ज्यादा नहीं। यह सिर्फ कहते हैं: * 443 * [सर्वर का IP पता] कोशिश कर रहा है() [सर्वर का नाम] पोर्ट से कनेक्ट करने के लिए के बारे में ... तो यह सिर्फ लटकी हुई है। मुझे कनेक्टिविटी मुद्दे की तरह लगता है। कोई अन्य विचार? मैं अभी पेकका के जवाब की कोशिश कर रहा हूं। – SenorPuerco

+0

कुछ कमांड लाइन विवरण जोड़ा गया। क्या आपने यह देखने के लिए उच्च समय सीमा निर्धारित करने का प्रयास किया है कि यह कभी वापस आता है या नहीं? 10 मिनट –

+0

पर सेट करने के लिए 'set_time_limit (600)' का उपयोग करें क्या आप आईपी पता पिंग कर सकते हैं? नेटवर्क/फ़ायरवॉल मुद्दे की तरह लगता है। यदि आप नहीं कर सकते हैं, तो आप इसे सीधे अपने आईटी दोस्तों को भेज सकते हैं और उन्हें सॉर्ट करने के लिए कह सकते हैं! –

-1

बिल्कुल संभव हो तो, उपयोगकर्ता के रूप में ing sudo कोशिश PHP के तहत चलता है (संभवतः एक अपाचे नीचे चलाता है)।

curl समस्या में कई कारण हो सकते हैं जिनके लिए उपयोगकर्ता इनपुट की आवश्यकता होती है, उदाहरण के लिए एक अविश्वसनीय प्रमाणपत्र जो रूट उपयोगकर्ता के विश्वसनीय प्रमाणपत्र कैश में संग्रहीत होता है, लेकिन PHP नहीं। उस स्थिति में, आदेश एक ऐसे इनपुट की प्रतीक्षा करेगा जो कभी नहीं होता।

अद्यतन: यह तब लागू होता है जब आप बाहरी रूप से exec का उपयोग कर कर्ल चलाते हैं - शायद यह लागू नहीं होता है।

+0

मैं PHP फ़ंक्शंस का उपयोग कर रहा हूं, इसलिए मुझे लगता है कि यह लागू नहीं होता है। हालांकि, ध्यान में रखना अच्छी बात है। – SenorPuerco

0

आप अपने विशिष्ट स्थानांतरण के बारे में जानकारी प्राप्त करने के लिए curl_getinfo() का भी उपयोग कर सकते हैं।

http://in.php.net/manual/en/function.curl-getinfo.php

+1

जब तक कि मैं गलत नहीं हूं, यह कनेक्शन उपयोगी होने पर ही उपयोगी होता है, है ना? – SenorPuerco

0

आप CURLOPT_MAXREDIRS स्थापित करने की कोशिश की है?मैंने पाया है कि कभी-कभी ऐसी वेबसाइटों के लिए 'अनंत' रीडायरेक्ट लूप होगा जो एक सामान्य ब्राउज़र उपयोगकर्ता नहीं देखता है।

+0

अच्छा विचार, लेकिन यह कुछ भी नहीं बदला। अभी भी समय समाप्त हो गया। – SenorPuerco