Proxyen leverer data. Skrivekallet ditt returnerer feil verdi. Da avbryter libcurl, og koden rundt rapporterer nok en «proxy-nedlastingsfeil».

Kallet må rapportere hvor mange mottatte byte det faktisk behandlet. Å returnere et annet antall signaliserer feil. For et bevisst blokkerende skrivemål kan et fragment se 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 forutsetter at den eksisterende applikasjonen eier handle og skrivemål. En mislykket eller kort skriving avbryter i stedet for å påstå stille at hele biten ble lagret. Et ikke-blokkerende mål trenger et passende buffer- og pause/gjenoppta-design; det lille fragmentet gir ikke et slikt.

Tell byte, ikke viste tegn. Dataene kan være binære eller del av en flerbytes tekstsekvens. Ett kall er ikke nødvendigvis én linje, ett JSON-dokument eller én melding fra tjenesten.

Inkrementell parsing trenger sin egen tilstand mellom kall. Omvendt kan oppsamling av hver bit til fullføring være riktig for et lite avgrenset svar, men er ikke en minnepolicy for en stor eller endeløs strøm.

Ta vare på overføringsresultatet og beviset på kallfeil. En lokal diskfeil eller parseravbrudd kan oppstå etter at en gyldig proxyrute er etablert. Hvis du vil stoppe etter et prefiks, merk den bevisste kallstoppen separat. Å bytte proxyadresse kan ikke reparere et mål som har sluttet å ta imot data.

Relaterte artikler