PHP cURL लेखन कलब्याकले ह्यान्डल गरिएको बाइट संख्या फर्काउनुपर्छ
प्रोक्सी प्रतिक्रियाका खण्डहरू उपभोग गर्दा बाइट-गणना सम्झौताको पालना गर्नुहोस् र स्थानीय लेखन असफलतालाई असफल प्रोक्सी जडानबाट छुट्याउनुहोस्।
प्रोक्सीले डेटा पुर्याउँछ। तपाईंको लेखन कलब्याकले गलत मान फर्काउँछ। त्यसपछि libcurl रोकिन्छ, र वरपरको कोडले अर्को “प्रोक्सी डाउनलोड असफलता” रिपोर्ट गर्छ।
कलब्याकले वास्तवमा कति प्राप्त बाइट ह्यान्डल गर्यो भनी रिपोर्ट गर्नुपर्छ। फरक संख्या फर्काउनु असफलता जनाउँछ। जानाजान ब्लक गर्ने लेखन सिङ्कका लागि, एउटा खण्ड यस्तो देखिन सक्छ:
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_WRITEFUNCTION,
function ($handle, $chunk) use ($sink) {
$written = fwrite($sink, $chunk);
return $written === false ? 0 : $written;
}
);यसले विद्यमान अनुप्रयोगसँग handle र लेखन सिङ्क छ भनी मान्छ। असफल वा छोटो लेखनले पूरै खण्ड सुरक्षित भयो भनी चुपचाप दाबी गर्नुको सट्टा रोकिन्छ। नन-ब्लकिङ सिङ्कलाई उपयुक्त बफरिङ र रोक/पुनःसुरु डिजाइन चाहिन्छ; सानो खण्डले त्यो दिँदैन।
बाइट गणना गर्नुहोस्, देखाइएका अक्षर होइन। डेटा बाइनरी वा बहु-बाइट पाठ अनुक्रमको भाग हुन सक्छ। एउटा कलब्याक अनिवार्य रूपमा एउटा लाइन, एउटा JSON कागजात वा सेवाबाट एउटा सन्देश हुँदैन।
इन्क्रिमेन्टल पार्सिङलाई कलब्याकहरूबीच आफ्नै स्थिति चाहिन्छ। यसको विपरीत, पूरा नभएसम्म प्रत्येक खण्ड जम्मा गर्नु सानो सीमित प्रतिक्रियाका लागि सही हुन सक्छ, तर ठूलो वा अन्तहीन स्ट्रिमका लागि मेमोरी नीति होइन।
स्थानान्तरणको नतिजा र कलब्याक असफलताको प्रमाण राख्नुहोस्। वैध प्रोक्सी मार्ग स्थापना भइसकेपछि स्थानीय डिस्क त्रुटि वा पार्सर रोकिन सक्छ। यदि तपाईं प्रिफिक्सपछि रोक्न चाहनुहुन्छ भने, त्यो जानाजान कलब्याक रोकाइलाई छुट्टै चिन्ह लगाउनुहोस्। प्रोक्सी ठेगाना बदल्नाले डेटा स्वीकार गर्न छाडेको सिङ्क सुधार्न सक्दैन।