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 ଦସ୍ତାବିଜ କିମ୍ବା ସେବାରୁ ଏକ ସନ୍ଦେଶ।
ଇନକ୍ରିମେଣ୍ଟାଲ୍ ପାର୍ସିଂ ପାଇଁ କଲବ୍ୟାକ୍ ମଧ୍ୟରେ ନିଜସ୍ୱ ସ୍ଥିତି ଆବଶ୍ୟକ। ଅନ୍ୟପକ୍ଷରେ, ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପର୍ଯ୍ୟନ୍ତ ପ୍ରତ୍ୟେକ ଅଂଶ ସଂଗ୍ରହ କରିବା ଛୋଟ ସୀମିତ ପ୍ରତିକ୍ରିୟା ପାଇଁ ସଠିକ୍ ହୋଇପାରେ, କିନ୍ତୁ ବଡ଼ କିମ୍ବା ଅସୀମ ସ୍ଟ୍ରିମ୍ ପାଇଁ ମେମୋରୀ ନୀତି ନୁହେଁ।
ସ୍ଥାନାନ୍ତରର ଫଳାଫଳ ଏବଂ କଲବ୍ୟାକ୍ ବିଫଳତାର ପ୍ରମାଣ ରଖନ୍ତୁ। ବୈଧ ପ୍ରକ୍ସି ପଥ ସ୍ଥାପିତ ହେବା ପରେ ସ୍ଥାନୀୟ ଡିସ୍କ ତ୍ରୁଟି କିମ୍ବା ପାର୍ସର ବନ୍ଦ ହୋଇପାରେ। ଯଦି ଆପଣ ଏକ ପ୍ରିଫିକ୍ସ ପରେ ଅଟକିବାକୁ ଚାହାନ୍ତି, ସେହି ଉଦ୍ଦେଶ୍ୟପୂର୍ବକ କଲବ୍ୟାକ୍ ଅଟକକୁ ଅଲଗା ଭାବରେ ଚିହ୍ନିତ କରନ୍ତୁ। ପ୍ରକ୍ସି ଠିକଣା ବଦଳାଇବା ଦ୍ୱାରା ଡାଟା ଗ୍ରହଣ ବନ୍ଦ କରିଥିବା ସିଙ୍କ୍ ସୁଧାରିହେବ ନାହିଁ।