curl

2011-06-21 16 views
5

की प्रगति की जांच करें क्या कर्ल कमांड की स्थिति जांचने का कोई तरीका है? कहें, मेरे पास इसे शुरू करने के लिए exec का उपयोग करके PHP से कर्ल करने का आह्वान है। क्या यह एक तरीका है जब मैं इसे चलाने के दौरान इसकी प्रगति की जांच कर सकता हूं? या मुझे इसे खत्म करने के लिए इंतजार करना है?curl

निष्पादन ("कर्ल $ url -k>/dev/null 2> ");

उत्तर

4

आपको प्रगति समारोह को परिभाषित कर सकते हैं:

curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, 'my_progress_handler'); 

कॉलबैक फ़ंक्शन जहां कॉलबैक फ़ंक्शन तीन पैरामीटर लेता है का नाम है। पहला कर्ल संसाधन है, दूसरा फ़ाइल-डिस्क्रिप्टर संसाधन है, और तीसरा लंबाई है। डेटा युक्त स्ट्रिंग लौटें।

अधिक जानकारी के लिए, here देखें।

ध्यान दें: This comment PHP के स्वयं के फ़ंक्शन हस्ताक्षर पर विवाद करता है।

आप exec() का उपयोग नहीं कर सकते हैं, क्योंकि यह एक अवरुद्ध कार्य है। यह तब तक इंतजार करेगा जब तक कि कार्यक्रम समाप्त नहीं हो जाता है।
संपादित करें: ओह, मुझे लगता है कि आप एम्परसेंड का इस्तेमाल किया है, कोई बात नहीं

क्या आप सकता है उपयोग popen() है, लेकिन जब तक कर्ल प्रगति outputting का एक अच्छा तरीका है, इस सुंदर होने के लिए नहीं जा रहा है।

मैं -# को curl पर पैरामीटर के रूप में पास करने का सुझाव दूंगा, इस तरह आप आउटपुट स्ट्रीम से अच्छी तरह से प्रगति को पकड़ सकते हैं।

+0

लेकिन क्या कर्ल कमांड के लिए यह काम निष्पादन के माध्यम से असीमित रूप से कहा जाता है? – Nathan

+0

एक्सेक कमांड का ब्लॉक नहीं करेगा और साथ ही नौकरी के रूप में चलाया जाएगा। हालांकि, आपको कोई आउटपुट नहीं मिलेगा। – datasage

+1

नहीं, यह 'curl_init() 'और' curl_exec() 'के माध्यम से काम करेगा। @ डेटासेट: हाँ, मैंने अभी देखा और सही किया कि मेरे अंतिम संपादन में। लेकिन फिर भी, 'popen() 'या' proc_open() 'सुंदर होने जा रहा है, क्योंकि आप आउटस्ट्रीम स्ट्रीम को सीधे संभालते हैं। – phant0m