I-write callback ye-cURL ingagcina i-prefix yomzimba enomkhawulo futhi imise ukudluliswa lapho lowo mkhawulo ufikile. Sebenzisa ifulegi lakho ukuze uhlukanise lokho kumiswa ngamabomu nokunye ukwehluleka kokubhala.

Ku-handle entsha i-URL yayo eqondiwe esivele ilungisiwe:

$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);
}

Isikimu se-socks5h se-URL ye-proxy sicela i-proxy ukuthi ixazulule igama le-host eqondiwe. Ukuze kube nokuhlolwa okuvunyelweyo kwethagethi yomphakathi ku-handle entsha ekhonjisiwe, ingeno engenayo i-akhawunti evela kuhlu lwama-proxy e-SOCKS5 inganikeza leyo endpoint. Ukuqinisekiswa kwesitifiketi se-TLS kugcina izilungiselelo zaso ezijwayelekile.

Ukubuyisela uziro ku-chunk engenalutho kutshela i-libcurl ukuthi i-callback ayizange yamukele idatha enikeziwe. Iyeka nge-CURLE_WRITE_ERROR. Lapha kubhekwa njengokulindelekile kuphela inhlanganisela yalelo phutha kanye nefulegi le-limitReached le-callback.

Impendulo emfushane kuno-mkhawulo iphetha ngokujwayelekile. Ku-mkhawulo noma ngaphezulu, i-prefix igcina okungenani 32 KiB ngisho noma i-callback yokugcina ithola i-chunk enkulu. Osayizi be-chunk bayahluka; usayizi we-buffer oceliwe awusiso isithembiso sokubiza kobude obungaguquki.

Lokhu kukhawulela umzimba ogciniwe, hhayi yonke i-byte esivele ise-buffer noma idlulisiwe kuxhumano. I-prefix ingaphelela ngaphakathi kohlamvu lwama-byte amaningi, inani le-JSON noma into ye-HTML, ngakho ungacabangi ukuthi iyidokhumenti ephelele ehlaziyekayo.

Izihloko ezihlobene