Прокси аркылуу жүктөлгөн барак толук эмес көрүнгөндө 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 аткарбайт. Браузер көрсөткөн бөлүктөр ар бир жөнөтүлгөн байт келгенде да баштапкы жоопто жок болушу мүмкүн.

Тектеш макалалар