Проксигоор татсан хуудас дутуу харагдах үед 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 ажиллуулахгүй. Хөтчөөр харагдах хэсгүүд нь дамжуулсан бүх байт ирсэн ч анхны хариултад байхгүй байж болно.

Холбоотой нийтлэлүүд