Jooji wareejinta PHP cURL ka dib horgalaha jirka
Ku hay horgale xaddidan write callback gudaha oo aqoonsado kaliya khaladka qorista ee uu callbackkaas si ula kac ah u keeno.
Write callback-ka cURL wuxuu hayn karaa horgale jir xaddidan oo joojin karaa wareejinta marka xadkaas la gaaro. Isticmaal calankaaga si aad u kala soocdo joojintaas ula kac ah iyo guuldarro kale oo qoris.
Handle cusub oo URL-ka bartilmaameedka horey loo habeeyay:
$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);
}
Qaabka socks5h ee URL-ka proxy wuxuu proxy-ga ka codsanayaa inuu xalliyo magaca martigeliyaha bartilmaameedka. Tijaabo la oggolaaday oo bartilmaameed dadweyne ah oo ku saabsan handle-ka cusub ee la muujiyay, gelitaan aan akoon lahayn oo ka socda liiska proxy-yada SOCKS5 ayaa bixin kara endpoint-kaas. Xaqiijinta shahaadada TLS waxay hayaanaysaa dejinta caadiga ah.
Soo celinta eber ee qayb aan madhnayn ah waxay libcurl u sheegtaa in callback-ku aanu aqbalin xogta la bixiyay. Waxay ku joogsataa CURLE_WRITE_ERROR. Halkan kaliya isku-darka khaladkaas iyo calanka limitReached ee callback-ka ayaa la tixgeliyaa mid la filayo.
Jawaab ka gaaban xadka waxay si caadi ah ku dhammaataa. Marka xadka la gaaro ama ka sarreeyo, prefix wuxuu hayaa ugu badnaan 32 KiB xitaa haddii callback-ka ugu dambeeya uu helo qayb weyn. Cabbirrada qaybaha way kala duwan yihiin; cabbirka buffer-ka la codsaday ma aha ballanqaad wicitaanno dherer go'an leh.
Tani waxay xaddidaa jirka la hayo, ma aha bayt kasta oo horey loo kaydiyay ama lagu wareejiyay xiriirka. Horgalahu wuxuu ku dhammaan karaa gudaha xaraf badan-byte, qiimaha JSON ama qayb HTML, markaa ha u qaadan inuu yahay dukumeenti buuxa oo la falanqayn karo.