אַ cURL שרײַב־קאָלבעק קען אויפֿהאַלטן אַ באַגרענעצטן קערפּער־פּרעפֿיקס און אָפּשטעלן די איבערפֿירונג, ווי נאָר מען דערגרייכט דעם באַגרענעץ. באַניץ דײַן אייגענעם פֿאָן כּדי צו פֿאַנאַנדערצושיידן דעם באַוווסטן אָפּשטעל פֿון אַן אַנדער שרײַב־דורכפֿאַל.

פֿאַר אַ נײַעם handle וועמענס ציל־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);
}

דאָס socks5h סכעמע פֿונעם פּראָקסי־URL בעט דעם פּראָקסי אויסצולײזן דעם ציל־האָסט־נאָמען. פֿאַר אַ דערלויבטער פּרוּוון אויף אַ פּובליק ציל אויף דעם געוויזענעם נײַעם handle קען אַן אַרײַנגאַנג אָן אַ חשבון פֿונעם SOCKS5 פּראָקסי־רשימה צושטעלן יענעם endpoint. די TLS־צערטיפֿיקאַט־פּריפֿונג האַלט אירע נאָרמאַלע איינשטעלונגען.

צוריקגעבן נול פֿאַר אַ נישט־לײדיקן שטיק זאָגט libcurl אַז דער קאָלבעק האָט נישט אָנגענומען די פֿאַרגעשטעלטע דאַטן. די איבערפֿירונג ווערט אָפּגעבראָכן מיט CURLE_WRITE_ERROR. דאָ ווערט נאָר די פֿאַרבינדונג פֿון יענעם פֿעלער מיטן limitReached־פֿאָן פֿונעם קאָלבעק אָנגענומען ווי דערוואַרט.

אַן ענטפֿער קירצער פֿונעם באַגרענעץ ענדיקט זיך נאָרמאַל. אויפֿן באַגרענעץ אָדער העכער דערפֿון האַלט prefix ביז 32 KiB אַפֿילו ווען דער לעצטער קאָלבעק באַקומט אַ גרעסערן שטיק. די שטיק־גרייסן זענען פֿאַרשיידן; אַ געבעטענע פּופֿער־גרייס איז נישט קיין צוזאָג פֿון רופֿן מיט אַ פֿעסטן לאַנג.

דאָס באַגרענעצט דעם אויפֿגעהאַלטענעם קערפּער, נישט יעדן ביט וואָס איז שוין געפּופֿערט אָדער איבערגעפֿירט געוואָרן אויף דער פֿאַרבינדונג. דער פּרעפֿיקס קען זיך ענדיקן אינמיטן אַ מערזשביטיקן אות, אַ JSON־ווערט אָדער אַ HTML־עלעמענט, דערפֿאַר מיינען נישט אַז עס איז אַ גאַנץ פּאַרסיריק דאָקומענט.

פֿאַרבונדענע אַרטיקלען