Proxy toimetab andmeid. Teie kirjutamise callback tagastab vale väärtuse. Seejärel katkestab libcurl ning ümbritsev kood teatab veel ühest „proxy allalaadimise tõrkest“.

Callback peab teatama, kui mitu vastuvõetud baiti see tegelikult töötles. Teistsuguse arvu tagastamine tähendab tõrget. Teadlikult blokeeriva kirjutuskohta puhul võib fragment välja näha nii:

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

See eeldab, et olemasolev rakendus omab handle'i ja kirjutuskohta. Ebaõnnestunud või lühike kirjutus katkestab, selle asemel et vaikselt väita, et kogu tükk salvestati. Mitteblokeeriv koht vajab sobivat puhverdamise ning pausi/jätkamise lahendust; väike fragment seda ei paku.

Loendage baite, mitte kuvatavaid märke. Andmed võivad olla binaarsed või osa mitmebaidisest tekstijadast. Üks callback ei ole tingimata üks rida, JSON-dokument ega teenuse sõnum.

Inkrementaalne parsimine vajab callbackide vahel oma olekut. Vastupidi, iga tüki kogumine kuni lõpuni võib olla õige väikese piiratud vastuse jaoks, kuid ei ole mälupoliitika suure või lõputu voo jaoks.

Hoidke alles ülekande tulemus ja callbacki tõrke tõendid. Kohalik kettatõrge või parseri katkestus võib tekkida pärast kehtiva proxy-marsruudi loomist. Kui kavatsete pärast eesliidet peatuda, märkige see tahtlik callbacki peatus eraldi. Proxy aadressi asendamine ei saa parandada sihtkohta, mis lakkas andmeid vastu võtmast.

Seotud artiklid