A u pre shkurtuar përgjigja cURL e PHP?
Kontrolloni rezultatin e transferimit të cURL, statusin e përgjigjes dhe paraqitjen e trupit përpara se të krahasoni madhësinë e shkarkuar me Content-Length.
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.