Misa ukudluliswa kwe-PHP cURL ngemva kwe-prefix yomzimba
Gcina i-prefix enomkhawulo ku-write callback futhi ubone kuphela iphutha lokubhala elibangelwa yilowo callback ngamabomu.
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.