Filloni me rezultatin e cURL kur një faqe e shkarkuar përmes një proxy duket e paplotë. Një përgjigje e shkurtër, një transferim i dështuar dhe një faqe e plotë bllokimi kërkojnë shpjegime të ndryshme.

Me CURLOPT_RETURNTRANSFER të aktivizuar në handle-in ekzistues të konfiguruar:

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

Mblidhni këto vlera përpara se të lironi handle-in. Krahasimi i rreptë dallon dështimin e transferimit nga trupat e suksesshëm si një varg bosh ose “0”. Statuset e gabimit HTTP nuk janë automatikisht dështime të curl_exec, prandaj interpretoni edhe statusin.

Numëruesi i shkarkimit nuk përfshin titujt. Vlera e deklaruar vjen nga Content-Length dhe është -1 kur kjo madhësi është e panjohur. Një përgjigje mund të heqë ligjërisht Content-Length; një vlerë e panjohur nuk është diagnozë e një skedari të shkurtuar.

Dekodimi automatik i përmbajtjes shtron një dallim tjetër. Content-Length zakonisht përshkruan paraqitjen e kompresuar, ndërsa vargu PHP mund të përmbajë bajt të dekompresuar. Krahasimi i strlen($body) me atë titull krahason paraqitje të ndryshme.

cURL mund të raportojë CURLE_PARTIAL_FILE kur transferimi shkel një madhësi të pritur. Ruajeni atë gabim në vend që të trajtoni çdo dalje jo boshe si sukses. Në të kundërt, një transferim i suksesshëm me një përgjigje 200 të vogël mund të jetë e gjithë faqja që origjina ose proxy vendosi të kthejë.

Së fundi kontrolloni përmbajtjen e nevojshme. HTML-ja që merr cURL nuk ekzekuton JavaScript për të mbushur faqen. Seksionet që shfaq shfletuesi mund të mungojnë në përgjigjen origjinale edhe kur ka mbërritur çdo bajt i transmetuar.

Artikuj të ngjashëm