PHP cURL funkcije za pisanje moraju vratiti broj obrađenih bajtova
Poštujte ugovor o broju bajtova pri trošenju delova proxy odgovora i razlikujte lokalnu grešku pisanja od neuspešne proxy veze.
Proxy isporučuje podatke. Vaša funkcija za pisanje vraća pogrešnu vrednost. libcurl tada prekida, a okolni kod prijavljuje još jedan „neuspeh preuzimanja preko proxyja“.
Funkcija mora prijaviti koliko je primljenih bajtova stvarno obradila. Vraćanje drugog broja označava neuspeh. Za namerno blokirajuće 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 poseduje ručku i odredište za pisanje. Neuspešno ili kratko pisanje prekida umesto da tiho tvrdi da je ceo fragment sačuvan. Neblokirajuće odredište zahteva odgovarajući dizajn međuspremnika i pauze/nastavka; mali fragment ga ne pruža.
Brojte bajtove, a ne prikazane znakove. Podaci mogu biti binarni ili deo višebajtne tekstualne sekvence. Jedan poziv nije nužno jedan red, JSON dokument ili poruka usluge.
Inkrementalno parsiranje zahteva sopstveno 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 prenosa i dokaz o neuspehu funkcije. Lokalna greška diska ili prekid parsera može se dogoditi nakon uspostavljanja valjane proxy rute. Ako nameravate da stanete nakon prefiksa, označite taj namerni prekid funkcije odvojeno. Zamena proxy adrese ne može popraviti odredište koje je prestalo da prima podatke.