Proxy isporučuje podatke. Vaša funkcija za pisanje vraća pogrešnu vrijednost. libcurl tada prekida, a okolni kod prijavljuje još jedan „neuspjeh preuzimanja preko proxyja“.

Funkcija mora prijaviti koliko je primljenih bajtova stvarno obradila. Vraćanje drugog broja označava neuspjeh. Za namjerno blokirajući odredište za pisanje, fragment može izgledati ovako:

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;
    }
);

Ovo pretpostavlja da postojeća aplikacija posjeduje ručku i odredište za pisanje. Neuspješno ili kratko pisanje prekida umjesto da tiho tvrdi da je cijeli fragment spremljen. Neblokirajuće odredište zahtijeva odgovarajući dizajn međuspremnika i pauze/nastavka; mali fragment ga ne pruža.

Brojite bajtove, a ne prikazane znakove. Podaci mogu biti binarni ili dio višebajtne tekstualne sekvence. Jedan poziv nije nužno jedan redak, JSON dokument ili poruka usluge.

Inkrementalno parsiranje zahtijeva vlastito stanje između poziva. Suprotno tome, nakupljanje svakog fragmenta do završetka može biti ispravno za mali ograničeni odgovor, ali nije memorijska politika za veliki ili beskonačni tok.

Sačuvajte rezultat prijenosa i dokaz o neuspjehu funkcije. Lokalna greška diska ili prekid parsera može se dogoditi nakon što je uspostavljena valjana proxy ruta. Ako namjeravate stati nakon prefiksa, označite taj namjerni prekid funkcije odvojeno. Zamjena proxy adrese ne može popraviti odredište koje je prestalo primati podatke.

Povezani članci