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 փաստաթուղթ կամ ծառայությունից մեկ հաղորդագրություն։
Աճողական վերլուծությունը պահանջում է իր սեփական վիճակը հետկանչների միջև։ Հակառակ դեպքում, յուրաքանչյուր հատվածի կուտակումը մինչև ավարտը կարող է ճիշտ լինել փոքր սահմանափակ պատասխանի համար, բայց հիշողության քաղաքականություն չէ մեծ կամ անվերջ հոսքի համար։
Պահեք փոխանցման արդյունքը և հետկանչի ձախողման ապացույցները։ Տեղական սկավառակի սխալ կամ վերլուծիչի դադարում կարող է տեղի ունենալ վավեր փրոքսի ուղի հաստատվելուց հետո։ Եթե մտադիր եք կանգ առնել նախածանցից հետո, նշեք այդ դիտավորյալ հետկանչի կանգը առանձին։ Փրոքսիի հասցեի փոխարինումը չի կարող վերանորոգել ընդունիչը, որը դադարել է տվյալներ ընդունել։