Eitt cURL-skriva-callback kann varðveita eitt avmarkað prefiks av body-inum og steðga flutninginum, tá ið henda markið er náð. Brúka títt egna flagg til at skilja hetta tilvitaða steðgið frá eini aðrari skrivivillu.

Fyri eitt nýtt handle, hvørs mál-URL longu er sett upp:

$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-skipanin í proxy-URL-inum biður proxy-in loysa málhost-navnið upp. Fyri eina loyvda roynd móti einum almennum máli á tí vísta nýggja handle-inum kann ein postur uttan konto frá SOCKS5-proxy-listanum veita hendan endpointin. TLS-samskirnið varðveitir vanligu stillingarnar.

At lata null aftur fyri ein ikki-tom bit sigur libcurl, at callbackið tók ikki ímóti teimum givnu dáta. Tað steðgar við CURLE_WRITE_ERROR. Her verður bara samansetingin av tí villuni og limitReached-flagginum hjá callbackinum mett sum væntað.

Eitt svar, sum er styttri enn markið, endar vanliga. Á markinum ella yvir heldur prefix í mesta lagi 32 KiB, sjálvt um seinasta callbackið fær ein størri bit. Bitstøddir broytast; ein umbidin bufferstødd er ikki eitt lyfti um køll av føstum longd.

Hetta avmarkar tað varðveitta body-ið, ikki hvønn einasta byte, sum longu er buffraður ella fluttur á sambandinum. Prefiksið kann enda inni í einum fleirbýtis-tekni, einum JSON-virði ella einum HTML-elementi, so antaka ikki, at tað er eitt fullkomið dokument, sum kann greinast.

Skyldar greinar