PHP cURL-skrivekall må returnere talet på behandla byte
Følg byte-tal-kontrakten når du brukar svarbitar frå proxyen, og skil ein lokal skrivefeil frå ei mislukka proxyforbinding.
Proxyen leverer data. Skrivekallet ditt returnerer feil verdi. Då avbryt libcurl, og koden rundt rapporterer nok ein «proxy-nedlastingsfeil».
Kallet må rapportere kor mange mottekne byte det faktisk behandla. Å returnere eit anna tal signaliserer feil. For eit medvite blokkerande skrivemål kan eit fragment sjå slik ut:
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;
}
);Dette føreset at den eksisterande applikasjonen eig handle og skrivemål. Ei mislukka eller kort skriving avbryt i staden for å påstå stille at heile biten vart lagra. Eit ikkje-blokkerande mål treng eit høveleg buffer- og pause/hald-fram-design; det vesle fragmentet gir ikkje eit slikt.
Tel byte, ikkje viste teikn. Dataa kan vere binære eller del av ein fleirbytes tekstsekvens. Eitt kall er ikkje nødvendigvis éi linje, eitt JSON-dokument eller éi melding frå tenesta.
Inkrementell parsing treng si eiga tilstand mellom kall. Omvendt kan oppsamling av kvar bit til fullføring vere rett for eit lite avgrensa svar, men er ikkje ein minnepolicy for ein stor eller endelaus straum.
Ta vare på overføringsresultatet og provet på kallfeil. Ein lokal diskfeil eller parseravbrot kan oppstå etter at ei gyldig proxyrunde er etablert. Viss du vil stoppe etter eit prefiks, merk den medvitne kallstoppen separat. Å byte proxyadresse kan ikkje reparere eit mål som har slutta å ta imot data.