PHP cURL -kirjoituskutsujen on palautettava käsiteltyjen tavujen määrä
Noudata tavumääräsopimusta välityspalvelimen vastausosia käsitellessäsi ja erota paikallinen kirjoitusvirhe epäonnistuneesta välityspalvelinyhteydestä.
Välityspalvelin toimittaa dataa. Kirjoituskutsusi palauttaa väärän arvon. Silloin libcurl keskeyttää ja ympäröivä koodi raportoi jälleen yhdestä ”välityspalvelimen latausvirheestä”.
Kutsun on raportoitava, kuinka monta vastaanotettua tavua se tosiasiassa käsitteli. Muun määrän palauttaminen merkitsee virhettä. Tarkoituksella estävälle kirjoituskohteelle kappale voi näyttää tältä:
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;
}
);Tämä olettaa, että olemassa oleva sovellus omistaa kahvan ja kirjoituskohteen. Epäonnistunut tai lyhyt kirjoitus keskeyttää sen sijaan, että väittäisi hiljaisesti koko osan tallennetun. Estämätön kohde tarvitsee asianmukaisen puskurointi- ja keskeytys/jatko-suunnittelun; pieni kappale ei tarjoa sellaista.
Laske tavut, älä näytettäviä merkkejä. Data voi olla binaarista tai osa monitavuista tekstijonoa. Yksi kutsu ei välttämättä ole yksi rivi, JSON-asiakirja tai palvelun viesti.
Inkrementaalinen jäsennys tarvitsee oman tilansa kutsujen välillä. Päinvastoin, jokaisen osan kerääminen valmistumiseen asti voi olla oikein pienelle rajalliselle vastaukselle, mutta se ei ole muististrategia suurelle tai loputtomalle virralle.
Säilytä siirron tulos ja kutsun virheen todisteet. Paikallinen levyvirhe tai jäsentimen keskeytys voi tapahtua sen jälkeen, kun kelvollinen välityspalvelinreitti on muodostettu. Jos aiot pysähtyä etuliitteen jälkeen, merkitse tuo tahallinen kutsun pysäytys erikseen. Välityspalvelimen osoitteen vaihtaminen ei voi korjata kohdetta, joka lakkasi ottamasta dataa vastaan.