Cuir crìoch air gluasad PHP cURL an dèidh ro-leasachan bodhaig
Cùm ro-leasachan cuibhrichte ann an callback sgrìobhaidh agus na h-aithnich ach a' mhearachd sgrìobhaidh a tha an callback sin a' dèanamh a dh'aona ghnothaich.
Faodaidh callback sgrìobhaidh cURL ro-leasachan cuibhrichte den bhodhaig a chumail agus an gluasad a stad nuair a ruigear a' chrìoch sin. Cleachd do bhratach fhèin gus an stad a dh'aona ghnothaich sin a dhealachadh bho fhàilligeadh sgrìobhaidh eile.
Airson handle ùr aig a bheil an URL targaid air a rèiteachadh mar-thà:
$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);
}
Bidh sgeama socks5h URL a' phrogsaidh ag iarraidh air a' phrogsaidh ainm an òstair thargaid a rèiteachadh. Airson deuchainn cheadaichte air targaid phoblach air an handle ùr a chithear, faodaidh inntrigeadh gun chunntas bho liosta phrogsaidhean SOCKS5 an endpoint sin a thoirt seachad. Cumaidh dearbhadh teisteanais TLS na suidheachaidhean àbhaisteach aige.
Le bhith a' tilleadh neoni airson pìos nach eil falamh, theirthear ri libcurl nach do ghabh an callback ris an dàta a chaidh a thoirt seachad. Stadaidh e le CURLE_WRITE_ERROR. Chan eilear a' meas ach an cothlamadh den mhearachd sin agus bratach limitReached a' callback mar rud a thathar an dùil ris an seo.
Thig freagairt nas giorra na a' chrìoch gu crìch gu h-àbhaisteach. Aig a' chrìoch no os a cionn, cha chùm prefix barrachd air 32 KiB eadhon ged a gheibh an callback mu dheireadh pìos nas motha. Bidh meudan phìosan ag atharrachadh; chan e gealltanas air gairmean de dh'fhaid shuidhichte a th' ann am meud bufair a dh'iarrar.
Cuiridh seo crìoch air a' bhodhaig a thèid a chumail, chan air a h-uile byte a tha air a bhufaireadh no air a ghluasad air a' cheangal mar-thà. Faodaidh an ro-leasachan crìochnachadh am broinn caractair ioma-bhàiteach, luach JSON no eileamaid HTML, mar sin na gabh ris gur e sgrìobhainn choileanta a ghabhas parsadh a th' ann.