এটা cURL ৰাইট কলবেক এটা সীমিত শৰীৰ-উপসৰ্গ ৰাখি সেই সীমা পোৱাৰ লগে লগে স্থানান্তৰ বন্ধ কৰিব পাৰে। সেই ইচ্ছাকৃত বন্ধটো আন এটা ৰাইট বিফলতাৰ পৰা পৃথক কৰিবলৈ নিজৰ ফ্লেগ ব্যৱহাৰ কৰক।

এটা নতুন হেণ্ডেলৰ বাবে যাৰ লক্ষ্য URL ইতিমধ্যে সংৰূপিত:

$limit = 32768;
$prefix = '';
$limitReached = false;

curl_setopt_array($ch, [
    CURLOPT_PROXY => 'socks5h://proxy.example.net:1080',
    CURLOPT_HEADER => false,
    CURLOPT_WRITEFUNCTION => function ($handle, $chunk)
        use (&$prefix, &$limitReached, $limit) {
        $remaining = $limit - strlen($prefix);
        $prefix .= substr($chunk, 0, $remaining);

        if (strlen($prefix) >= $limit) {
            $limitReached = true;
            return 0;
        }

        return strlen($chunk);
    },
]);

$result = curl_exec($ch);
$error = curl_errno($ch);

$expectedStop = $limitReached && $error === CURLE_WRITE_ERROR;
if ($result === false && !$expectedStop) {
    throw new RuntimeException(curl_error($ch), $error);
}

প্ৰক্সি URL ৰ socks5h স্কিমে প্ৰক্সিক লক্ষ্য হোষ্টনাম সমাধান কৰিবলৈ কয়। ওপৰত দেখুওৱা নতুন হেণ্ডেলত অনুমোদিত ৰাজহুৱা লক্ষ্যৰ পৰীক্ষাৰ বাবে SOCKS5 প্ৰক্সি তালিকাৰ পৰা এটা একাউণ্টহীন এণ্ট্ৰিয়ে সেই এণ্ডপইণ্ট যোগান ধৰিব পাৰে। TLS প্ৰমাণপত্ৰ সত্যাপনৰ স্বাভাৱিক ছেটিং থাকি যায়।

খালী নোহোৱা চাঙ্কৰ বাবে শূন্য ঘূৰাই দিলে libcurl ক কোৱা হয় যে কলবেকে যোগান ধৰা তথ্য গ্ৰহণ কৰা নাই। ই CURLE_WRITE_ERROR ৰ সৈতে বন্ধ হয়। ইয়াত কেৱল সেই ত্ৰুটি আৰু কলবেকৰ limitReached ফ্লেগৰ সংযোগহে প্ৰত্যাশিত বুলি ধৰা হয়।

সীমাতকৈ চুটি প্ৰতিক্ৰিয়া স্বাভাৱিকভাৱে শেষ হয়। সীমাত বা তাতকৈ বেছি হ'লে prefix ত 32 KiB ৰ অধিক নাথাকে, যদিও অন্তিম কলবেকে ডাঙৰ চাঙ্ক লাভ কৰে। কলবেকৰ চাঙ্কৰ আকাৰ বেলেগ বেলেগ; অনুৰোধ কৰা বাফাৰ আকাৰে স্থিৰ দৈৰ্ঘ্যৰ কলৰ প্ৰতিশ্ৰুতি নহয়।

ই ৰখা শৰীৰটো সীমিত কৰে, সংযোগত ইতিমধ্যে বাফাৰ কৰা বা স্থানান্তৰিত প্ৰতিটো বাইট নহয়। উপসৰ্গটো এটা বহু-বাইট আখৰ, JSON মান বা HTML উপাদানৰ মাজত শেষ হ'ব পাৰে, গতিকে ই সম্পূৰ্ণ বিশ্লেষণযোগ্য নথিপত্ৰ বুলি ধৰি নল'ব।

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