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 మూలకం లోపల ముగియవచ్చు, కాబట్టి ఇది పూర్తిగా విశ్లేషించగల పత్రం అని భావించవద్దు.

సంబంధిత వ్యాసాలు