PHP cURL erantzuna moztu zen?
Egiaztatu cURLen transferentzia-emaitza, erantzunaren egoera eta gorputzaren adierazpena, deskargatutako tamaina Content-Length-ekin alderatu aurretik.
Hasi cURLen emaitzatik proxy baten bidez deskargatutako orrialde bat osatugabea dirudienean. Erantzun laburrak, huts egindako transferentziak eta blokeo-orri osoek azalpen desberdinak behar dituzte.
Lehendik konfiguratutako handlean CURLOPT_RETURNTRANSFER gaituta dagoela:
$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);
Bildu balio hauek handlea askatu aurretik. Konparazio zorrotzak transferentzia-hutsegitea gorputz arrakastatsuetatik bereizten du, hala nola kate hutsa edo “0”. HTTP errore-egoerak ez dira automatikoki curl_exec-en hutsegiteak, beraz, interpretatu egoera ere.
Deskargatutako kontagailuak goiburuak baztertzen ditu. Deklaratutako balioa Content-Length-etik dator eta -1 da tamaina ezezaguna denean. Erantzun batek legez ken dezake Content-Length; balio ezezaguna ez da fitxategi moztuaren diagnostikoa.
Edukiaren deskodeketa automatikoak beste bereizketa bat gehitzen du. Content-Length-ek normalean bertsio konprimitua deskribatzen du, PHP kateak ordea byte deskonprimituak izan ditzake. strlen($body) goiburu horrekin alderatzeak adierazpen desberdinak alderatzen ditu.
cURLek CURLE_PARTIAL_FILE jakinarazi dezake transferentziak espero den tamaina urratzen duenean. Gorde errore hori, irteera ez-hutsa arrakastatzat hartu beharrean. Alderantziz, 200 erantzun txiki bat duen transferentzia arrakastatsua jatorriak edo proxyak itzultzea aukeratu zuen orrialde osoa izan daiteke.
Azkenik egiaztatu beharrezko edukia. cURLek lortutako HTMLak ez du JavaScript exekutatzen orrialdea betetzeko. Nabigatzaileak erakusten dituen atal falta daitezke jatorrizko erantzunean, transmititutako byte guztiak iritsi badira ere.