Proksidən yüklənən səhifə natamam görünəndə cURL-un nəticəsindən başlayın. Qısa cavab, uğursuz ötürmə və tam bloklama səhifəsi fərqli izahlar tələb edir.

Mövcud konfiqurasiya edilmiş handle üzərində CURLOPT_RETURNTRANSFER aktiv ikən:

$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);

Bu dəyərləri handle-ı buraxmazdan əvvəl toplayın. Ciddi müqayisə ötürmə uğursuzluğunu boş sətir və ya “0” kimi uğurlu gövdələrdən ayırır. HTTP xəta statusları avtomatik olaraq curl_exec uğursuzluğu deyil, ona görə statusu da şərh edin.

Yüklənmiş sayğac başlıqları (headers) əhatə etmir. Bəyan edilən dəyər Content-Length-dən gəlir və ölçü bilinmədikdə -1 olur. Cavab Content-Length-i qanuni olaraq buraxa bilər; bilinməyən dəyər kəsilmiş fayl diaqnozu deyil.

Avtomatik məzmun dekodlanması başqa bir fərq yaradır. Content-Length adətən sıxılmış təqdimatı təsvir edir, PHP sətri isə açılmış baytları saxlaya bilər. strlen($body)-ni həmin başlıqla müqayisə etmək fərqli təqdimatları müqayisə etmək deməkdir.

Ötürmə gözlənilən ölçünü pozduqda cURL CURLE_PARTIAL_FILE bildirə bilər. Hər hansı boş olmayan çıxışı uğur saymaq əvəzinə bu xətanı saxlayın. Əksinə, kiçik 200 cavablı uğurlu ötürmə mənbənin və ya proksinin qaytarmağı seçdiyi bütün səhifə ola bilər.

Nəhayət tələb olunan məzmunu yoxlayın. cURL-un gətirdiyi HTML səhifəni doldurmaq üçün JavaScript icra etmir. Brauzerin göstərdiyi çatışmayan bölmələr, ötürülən hər bayt gəlsə də, ilkin cavabda olmaya bilər.

Əlaqəli məqalələr