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 పత్రం లేదా సేవ నుండి ఒక సందేశం కాదు.
ఇన్క్రిమెంటల్ పార్సింగ్కు కాల్బ్యాక్ల మధ్య దాని స్వంత స్థితి అవసరం. దీనికి విరుద్ధంగా, పూర్తయ్యే వరకు ప్రతి భాగాన్ని సేకరించడం చిన్న పరిమిత ప్రతిస్పందనకు సరైనది కావచ్చు, కానీ పెద్ద లేదా అనంతమైన స్ట్రీమ్కు మెమరీ విధానం కాదు.
బదిలీ ఫలితాన్ని మరియు కాల్బ్యాక్ వైఫల్యానికి సాక్ష్యాన్ని ఉంచండి. చెల్లుబాటు అయ్యే ప్రాక్సీ మార్గం ఏర్పడిన తర్వాత స్థానిక డిస్క్ లోపం లేదా పార్సర్ ఆగిపోవడం సంభవించవచ్చు. మీరు ఉపసర్గ తర్వాత ఆపాలనుకుంటే, ఆ ఉద్దేశపూర్వక కాల్బ్యాక్ ఆపుదలను విడిగా గుర్తించండి. ప్రాక్సీ చిరునామాను మార్చడం డేటాను స్వీకరించడం ఆపిన గమ్యాన్ని సరిచేయలేదు.