প্রক্সি ডেটা সরবরাহ করে। আপনার রাইট কলব্যাক ভুল মান ফেরত দেয়। এরপর 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;
    }
);

এটি ধরে নেয় যে বিদ্যমান অ্যাপ্লিকেশনটি হ্যান্ডেল ও লেখার সিঙ্কের মালিক। ব্যর্থ বা সংক্ষিপ্ত লেখা পুরো খণ্ড সংরক্ষিত হয়েছে বলে নীরবে দাবি না করে বাতিল হয়। ননব্লকিং সিঙ্কের জন্য উপযুক্ত বাফারিং ও বিরতি/পুনরায় শুরু নকশা দরকার; ছোট খণ্ডটি তা দেয় না।

বাইট গণনা করুন, প্রদর্শিত অক্ষর নয়। ডেটা বাইনারি বা বহু-বাইট পাঠ্য অনুক্রমের অংশ হতে পারে। একটি কলব্যাক অপরিহার্যভাবে এক লাইন, একটি JSON ডকুমেন্ট বা সেবা থেকে একটি বার্তা নয়।

ইনক্রিমেন্টাল পার্সিংয়ের কলব্যাকগুলোর মধ্যে নিজস্ব অবস্থা দরকার। বিপরীতে, সম্পূর্ণ হওয়া পর্যন্ত প্রতিটি খণ্ড জমা করা ছোট সীমিত প্রতিক্রিয়ার জন্য সঠিক হতে পারে, কিন্তু বড় বা অন্তহীন স্ট্রিমের জন্য স্মৃতি নীতি নয়।

স্থানান্তরের ফলাফল এবং কলব্যাক ব্যর্থতার প্রমাণ রাখুন। বৈধ প্রক্সি পথ প্রতিষ্ঠার পরেও স্থানীয় ডিস্ক ত্রুটি বা পার্সার বাতিল হতে পারে। আপনি যদি একটি প্রিফিক্সের পরে থামতে চান, সেই ইচ্ছাকৃত কলব্যাক থামানো আলাদাভাবে চিহ্নিত করুন। প্রক্সি ঠিকানা বদলে এমন সিঙ্ক ঠিক করা যায় না যা ডেটা গ্রহণ করা বন্ধ করেছে।

সম্পর্কিত নিবন্ধ