मैं जानना चाहता हूं कि कर्ल के माध्यम से केवल एक विशेष मात्रा में डेटा प्राप्त करने का कोई तरीका है या नहीं?

विकल्प 1:
<कोड> curl_setopt ($ curl_handle, CURLOPT_HTTPHEADER, सरणी ("रेंज: बाइट्स = 0-1000")); लेकिन यह सभी सर्वरों द्वारा समर्थित नहीं है

विकल्प 2:
PHP के कर्ल फ़ंक्शन के डाउनलोड आकार को सीमित करने में समस्या हो रही है लेकिन यह फ़ंक्शन मुझे त्रुटि दे रहा है Failed writing body (0 != 11350) और जिसके लिए मैंने पाया कि कई लोग कहते हैं कि यह एक बग है।

तो उपरोक्त write_function का अनुसरण करते हुए मैंने returning 0 के बजाय curl_close($handle) करने का प्रयास किया लेकिन यह एक त्रुटि उत्पन्न करता है Attempt to close cURL handle from a callback

अब केवल एक ही तरीका है जिसके बारे में मैं सोच सकता हूं कि सामग्री की लंबाई but this will eventually result in 2 requests ?? के लिए हेडर को पार्स करना पहले CURLOPT_NOBODY के साथ हेडर प्राप्त करना और फिर पूर्ण सामग्री प्राप्त करना है?

5
Shishant 29 मार्च 2011, 00:51
क्या फ़ाइल से केवल पहले 1000 बाइट्स लाने का उद्देश्य है, या क्या आपको अपने प्रसंस्करण उद्देश्यों के लिए केवल पहले 1000 बाइट्स की आवश्यकता है?
 – 
Andy Baird
29 मार्च 2011, 02:02
आप fsockopen और दोस्तों के साथ ऐसा कर सकते हैं, लेकिन वह अनुकूलन इसके लायक नहीं है। याद रखें, "समयपूर्व अनुकूलन सभी बुराइयों की जड़ है"
 – 
sanmai
4 सितंबर 2011, 14:05
एफवाईआई मैंने डिस्क भरने पर "असफल लेखन निकाय (0! = 11350)" जैसी चीजें देखी हैं।
 – 
Darth Egregious
17 नवम्बर 2014, 22:33

2 जवाब

सबसे बढ़िया उत्तर

विकल्प 2: PHP के कर्ल फ़ंक्शन के डाउनलोड आकार को सीमित करने में परेशानी हो रही है, लेकिन यह फ़ंक्शन मुझे त्रुटि दे रहा है लिखने में विफल शरीर (0! = 11350) और पढ़ने के लिए मैंने पाया कि कई लोग कहते हैं कि यह एक बग है।

यह स्पष्ट नहीं है कि आप वहां क्या कर रहे हैं। यदि आप 0 लौटाते हैं तो कर्ल निश्चित रूप से एक त्रुटि का संकेत देगा, लेकिन आपने अपनी जरूरत का सारा डेटा पढ़ लिया होगा। बस त्रुटि को अनदेखा करें।

एक अन्य विकल्प जिसका आपने उल्लेख नहीं किया है यदि आपने कोशिश की है तो fopen का उपयोग http:// रैपर के साथ करना है। उदाहरण के लिए:

$h = fopen('http://example.com/file.php', 'r');
$first1000Bytes = fread($h, 1000);
fclose($h);
0
Jon 29 मार्च 2011, 02:15
मुझे फॉपेन के बारे में पता है, लेकिन कई परीक्षणों से पता चला है कि कर्ल आम तौर पर 2-4 गुना तेज हो जाता है fopen इसलिए यहां यह जानने की कोशिश कर रहा है कि क्या कोई अन्य संभावनाएं हैं, साइड नोट पर भले ही यह एक त्रुटि फेंक दे। सभी डेटा प्राप्त कर रहा था (मुझे लगता है कि यह तेज़ कनेक्शन के कारण भी हो सकता है जिसके परिणामस्वरूप पूरे डेटा के बराबर बफर आकार होता है, मैं परीक्षण के लिए अत्यधिक लंबा डेटा आज़माउंगा)
 – 
Shishant
29 मार्च 2011, 02:29

क्या एक समय में एक पंक्ति को पढ़ने के लिए fopen और fgets का उपयोग करना संभव है जब तक कि आपको विश्वास न हो कि आपने पर्याप्त पंक्तियाँ पढ़ ली हैं, या fgetc. fgets

सुनिश्चित नहीं है कि यह वही है जो आप खोज रहे हैं, लेकिन दूरस्थ स्रोत से प्राप्त डेटा की मात्रा को सीमित करना चाहिए।

0
InvisibleFrisbee 29 मार्च 2011, 02:24