प्रॉक्सी डेटा पोहोचवतो. तुमचा राइट कॉलबॅक चुकीचे मूल्य परत देतो. मग 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 दस्तऐवज किंवा सेवेकडून एक संदेश असणे आवश्यक नाही.

इन्क्रिमेंटल पार्सिंगला कॉलबॅकमध्ये स्वतःची स्थिती लागते. उलटपक्षी, पूर्ण होईपर्यंत प्रत्येक तुकडा साठवणे लहान मर्यादित प्रतिसादासाठी बरोबर असू शकते, पण मोठ्या किंवा अंतहीन स्ट्रीमसाठी स्मृती धोरण नाही.

हस्तांतरणाचा निकाल आणि कॉलबॅक अपयशाचे पुरावे ठेवा. वैध प्रॉक्सी मार्ग स्थापन झाल्यानंतर स्थानिक डिस्क त्रुटी किंवा पार्सर थांबू शकतो. तुम्हाला प्रीफिक्सनंतर थांबायचे असल्यास, ते हेतुपुरस्सर कॉलबॅक थांबवणे वेगळे चिन्हांकित करा. प्रॉक्सी पत्ता बदलल्याने डेटा घेणे थांबवलेला सिंक दुरुस्त होऊ शकत नाही.

संबंधित लेख