Il-callbacks tal-kitba ta' PHP cURL iridu jirritornaw in-numru ta' bytes immaniġġjati
Irrispetta l-kuntratt tal-għadd tal-bytes meta tikkonsma biċċiet tar-risposta tal-proxy u odda differenza bejn falliment tal-kitba lokali u konnessjoni tal-proxy li falliet.
Il-proxy jwassal id-dejta. Il-callback tal-kitba tiegħek jirritorna l-valur ħażin. Imbagħad libcurl jieqaf, u l-kodiċi madwaru jirrapporta “falliment ieħor fit-tniżżil permezz tal-proxy”.
Il-callback irid jirrapporta kemm-il byte riċevut effettivament immaniġġja. Li tirritorna għadd differenti jfisser falliment. Għal sink tal-kitba li jimblokka apposta, biċċa tista' tidher hekk:
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_WRITEFUNCTION,
function ($handle, $chunk) use ($sink) {
$written = fwrite($sink, $chunk);
return $written === false ? 0 : $written;
}
);Dan jassumi li l-applikazzjoni eżistenti għandha l-handle u s-sink tal-kitba. Kitba li tfalli jew qasira tieqaf minflok ma tgħid bil-kwiet li l-biċċa kollha ġiet salvata. Sink li ma jimblokkax jeħtieġ disinn xieraq ta' buffering u waqfien/tkomplija; il-biċċa żgħira ma tipprovdix wieħed.
Għodd il-bytes, mhux il-karattri murija. Id-dejta tista' tkun binarja jew parti minn sekwenza ta' test b'ħafna bytes. Callback wieħed mhux bilfors linja waħda, dokument JSON wieħed jew messaġġ wieħed mis-servizz.
Il-parsing inkrementali jeħtieġ stat tiegħu bejn il-callbacks. Bil-maqlub, li tiġbor kull biċċa sal-kompletament jista' jkun korrett għal risposta żgħira limitata, iżda mhuwiex politika tal-memorja għal fluss kbir jew bla tmiem.
Żomm ir-riżultat tat-trasferiment u l-evidenza tal-falliment tal-callback. Żball lokali tad-diska jew waqfien tal-parser jistgħu jiġru wara li tinħoloq rotta tal-proxy valida. Jekk beħsiebek tieqaf wara prefiss, immarka dak il-waqfien intenzjonat tal-callback separatament. Is-sostituzzjoni tal-indirizz tal-proxy ma tistax issewwi sink li waqaf jaċċetta d-dejta.