La prokuro liveras datumojn. Via skriba retrovoko redonas malĝustan valoron. Tiam libcurl ĉesigas, kaj la ĉirkaŭa kodo raportas plian “prokuran elŝutan malsukceson”.

La retrovoko devas raporti kiom da ricevitaj bajtoj ĝi vere traktis. Redoni alian nombron signalas malsukceson. Por intence blokanta skribcelo, ero povas aspekti tiel:

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

Tio supozas, ke la ekzistanta aplikaĵo posedas la tenilon kaj la skribcelon. Malsukcesa aŭ mallonga skribo ĉesigas anstataŭ silente aserti, ke la tuta ero estis konservita. Neblokanta celo bezonas taŭgan bufran kaj paŭzan/rekomencan dezajnon; la malgranda ero ne provizas tion.

Kalkulu bajtojn, ne montratajn signojn. La datumoj povas esti duumaj aŭ parto de plurbajta teksta sinsekvo. Unu retrovoko ne nepre estas unu linio, unu JSON-dokumento aŭ unu mesaĝo de la servo.

Plustepa analizado bezonas propran staton inter retrovokoj. Male, akumulado de ĉiu ero ĝis fino povas esti ĝusta por malgranda limigita respondo, sed ĝi ne estas memora politiko por granda aŭ senfina fluo.

Konservu la rezulton de la transdono kaj la pruvojn de retrovoka malsukceso. Loka disk-eraro aŭ analizila ĉesigo povas okazi post kiam valida prokura vojo estis starigita. Se vi intencas halti post prefikso, marku tiun intencan retrovokan halton aparte. Anstataŭigi la prokuran adreson ne povas ripari celon, kiu ĉesis akcepti datumojn.

Rilataj artikoloj