Функциите за пишување на PHP cURL мора да го вратат бројот на обработени бајти
Почитувајте го договорот за бројот на бајти при користење на деловите од одговорот преку прокси и разликувајте локална грешка при пишување од неуспешна прокси врска.
Проксито доставува податоци. Вашата функција за пишување враќа погрешна вредност. Тогаш 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;
}
);Ова претпоставува дека постојната апликација го поседува handle-от и дестинацијата за пишување. Неуспешно или кратко пишување прекинува наместо тивко да тврди дека целиот фрагмент е зачуван. Неблокирачката дестинација бара соодветен дизајн на баферирање и пауза/продолжување; малиот фрагмент не го обезбедува тоа.
Бројте бајти, а не прикажани знаци. Податоците може да бидат бинарни или дел од повеќебајтна текст секвенца. Еден повик не е нужно една линија, еден JSON документ или една порака од услугата.
Инкременталното парсирање бара сопствена состојба помеѓу повиците. Обратно, собирањето на секој фрагмент до завршување може да биде точно за мал ограничен одговор, но не е мемориска политика за голем или бесконечен тек.
Зачувајте го резултатот од преносот и доказот за неуспехот на функцијата. Локална грешка на дискот или прекин на парсерот може да се случи откако е воспоставена валидна прокси рута. Ако имате намера да запрете по префикс, означете го тоа намерно запирање одделно. Замената на прокси адресата не може да поправи дестинација што престана да прима податоци.