Проксі перадае даныя. Ваша функцыя запісу вяртае няправільнае значэнне. Тады libcurl спыняецца, і навакольны код паведамляе яшчэ адну «памылку загрузкі праз проксі».

Функцыя павінна паведамляць, колькі атрыманых байтаў яна фактычна апрацавала. Вяртанне іншай колькасці азначае памылку. Для наўмысна блакуючага прыёмніка запісу фрагмент можа выглядаць так:

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

Гэта мяркуе, што існуючая праграма валодае дэскрыптарам і прыёмнікам. Няўдалы або кароткі запіс спыняе працу, а не сцвярджае моўчкі, што ўвесь фрагмент захаваны. Неблакуючы прыёмнік патрабуе належнага праектавання буферызацыі і прыпынку/аднаўлення; малы фрагмент такога не дае.

Лічыце байты, а не адлюстраваныя сімвалы. Даныя могуць быць бінарнымі або часткай шматбайтавай тэкставай паслядоўнасці. Адзін выклік не абавязкова адзін радок, JSON-дакумент ці паведамленне ад службы.

Інкрэментны разбор патрабуе ўласнага стану паміж выклікамі. І наадварот, назапашванне кожнага фрагмента да завяршэння можа быць правільным для невялікага абмежаванага адказу, але не з'яўляецца палітыкай памяці для вялікага або бясконцага патоку.

Захоўвайце вынік перадачы і сведчанні збою функцыі. Лакальная памылка дыска або спыненне разборшчыка могуць адбыцца пасля ўсталявання слушнага маршруту праз проксі. Калі вы маеце намер спыніцца пасля прэфікса, пазначце гэтае наўмыснае спыненне асобна. Замена адрасу проксі не можа выправіць прыёмнік, які перастаў прымаць даныя.

Падобныя артыкулы