جب پراکسی کے ذریعے ڈاؤن لوڈ کردہ صفحہ نامکمل لگے تو cURL کے نتیجے سے شروع کریں۔ مختصر جواب، ناکام منتقلی اور مکمل بلاک صفحہ مختلف وضاحتیں مانگتے ہیں۔

موجودہ ترتیب شدہ handle پر CURLOPT_RETURNTRANSFER فعال ہونے پر:

$body = curl_exec($ch);
if ($body === false) {
    throw new RuntimeException(curl_error($ch), curl_errno($ch));
}

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$downloaded = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD_T);
$declared = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T);

handle چھوڑنے سے پہلے یہ اقدار جمع کریں۔ سخت موازنہ منتقلی کی ناکامی کو خالی سٹرنگ یا “0” جیسی کامیاب باڈیوں سے الگ کرتا ہے۔ HTTP خطا کی حالتیں خودبخود curl_exec کی ناکامی نہیں ہوتیں، اس لیے حالت کی بھی تشریح کریں۔

ڈاؤن لوڈ کاؤنٹر ہیڈر شامل نہیں کرتا۔ اعلان کردہ قدر Content-Length سے آتی ہے اور جب سائز نامعلوم ہو تو -1 ہوتی ہے۔ جواب قانونی طور پر Content-Length چھوڑ سکتا ہے؛ نامعلوم قدر کٹی ہوئی فائل کی تشخیص نہیں ہے۔

خودکار مواد ڈی کوڈنگ ایک اور فرق لاتی ہے۔ Content-Length عام طور پر کمپریس شدہ نمائندگی بیان کرتا ہے، جبکہ PHP سٹرنگ میں ڈی کمپریس شدہ بائٹس ہو سکتے ہیں۔ strlen($body) کا اُس ہیڈر سے موازنہ مختلف نمائندگیوں کا موازنہ ہے۔

cURL CURLE_PARTIAL_FILE کی اطلاع دے سکتا ہے جب منتقلی متوقع سائز کی خلاف ورزی کرے۔ کسی بھی غیر خالی آؤٹ پٹ کو کامیابی سمجھنے کے بجائے وہ خطا محفوظ رکھیں۔ اس کے برعکس، چھوٹے 200 جواب کے ساتھ کامیاب منتقلی وہ پورا صفحہ ہو سکتا ہے جو اصل ماخذ یا پراکسی نے واپس کرنے کا انتخاب کیا۔

آخر میں مطلوبہ مواد جانچیں۔ cURL کا لایا ہوا HTML صفحہ بھرنے کے لیے JavaScript نہیں چلاتا۔ براؤزر جو حصے دکھاتا ہے وہ بھیجے گئے ہر بائٹ کے پہنچنے کے باوجود اصل جواب میں موجود نہیں ہو سکتے۔

متعلقہ مضامین