2011-04-03 12 views
9

आम तौर पर जब मैं curl शुरू करता हूं तो मैं डेटा पोस्ट करता हूं। और मैं प्रतिक्रिया की प्रतीक्षा करता हूं, इसे पार्स करता हूं, आदि ...प्रतिक्रिया प्राप्त किए बिना cUrl अनुरोध कैसे करें?

मैं बस डेटा पोस्ट करना चाहता हूं, और किसी भी प्रतिक्रिया के लिए प्रतीक्षा नहीं करना चाहता हूं। दूसरे शब्दों में, क्या मैं कर्ल के माध्यम से यूआरएल को डेटा भेज सकता हूं, और तुरंत अपना कनेक्शन बंद कर सकता हूं? (किसी भी प्रतिक्रिया की प्रतीक्षा नहीं कर रहा है, या यहां तक ​​कि यह देखने के लिए कि यूआरएल मौजूद है या नहीं)

पूछना सामान्य बात नहीं है, लेकिन मैं वैसे भी पूछ रहा हूं। - सिर्फ एक अनुरोध को वापस ले आग और प्रतिक्रिया के लिए पूछ परेशान नहीं है

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
curl_exec($ch); 
curl_close($ch); 

उत्तर

6

मेरा मानना ​​है कि लिए एक ही रास्ता वास्तव में दूरस्थ सर्वर से पूरे प्रतिक्रिया प्राप्त नहीं CURLOPT_WRITEFUNCTION उपयोग करना है। उदाहरण के लिए:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'do_nothing'); 
curl_exec($ch); 
curl_close($ch); 

function do_nothing($curl, $input) { 
    return 0; // aborts transfer with an error 
} 

महत्वपूर्ण नोट

  1. ध्यान रखें कि यह एक चेतावनी के रूप में उत्पन्न होगा स्थानांतरण निरस्त दिया जाएगा।
  2. सुनिश्चित करें कि आप CURLOPT_RETURNTRANSFER का मान सेट नहीं करते हैं, क्योंकि यह लिखने के कॉलबैक में हस्तक्षेप करेगा।
6

आप curl_multi_* कार्यों कि एकाधिक अनुरोध निष्पादित करने के लिए तैयार कर रहे हैं के माध्यम से ऐसा कर सकता है:

यहाँ मैं अब तक राशि है।

यह सुनिश्चित नहीं है कि क्या होगा यदि स्क्रिप्ट निकलता है और कर्ल अभी भी चल रहा है तो क्या होगा।

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
$mh = curl_multi_init(); 
curl_multi_add_handle($mh,$ch); 
$running = 'idc'; 
curl_multi_exec($mh,$running); // asynchronous 
// don't bother with the usual cleanup 
-1

यह सुनिश्चित नहीं करता कि यह मदद करता है, लेकिन कमांड लाइन के माध्यम से मुझे लगता है कि आप '--मैक्स-टाइम' विकल्प का उपयोग कर सकते हैं - "अधिकतम ऑपरेशन जो आप पूरे ऑपरेशन को लेने की अनुमति देते हैं।"

मैं कुछ त्वरित और गंदी करना पड़ा और फिर से प्रोग्राम कोड या एक प्रतिक्रिया के लिए प्रतीक्षा करने के लिए नहीं करना चाहता था, इसलिए कर्ल मैनुअल

कर्ल में --max समय विकल्प पाया - अधिकतम समय 1 यूआरएल

संबंधित मुद्दे

 संबंधित मुद्दे