Byrjaðu á niðurstöðu cURL þegar síða sem hlaðið var niður um proxy virðist ófullkomin. Stutt svar, misheppnuð flutningur og heil blokkunarsíða krefjast mismunandi skýringa.

Með CURLOPT_RETURNTRANSFER virkt á núverandi stillta handle:

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

Safnaðu þessum gildum áður en þú sleppir handfanginu. Strangi samanburðurinn greinir flutningsbilun frá árangursríkum meginmálum eins og tómum streng eða “0”. HTTP-villustöður eru ekki sjálfkrafa curl_exec-bilanir, svo túlkaðu stöðuna líka.

Niðurhalsteljarinn telur ekki með hausana. Tilgreint gildi kemur frá Content-Length og er -1 þegar stærðin er óþekkt. Svar má lögmætlega sleppa Content-Length; óþekkt gildi er ekki greining á styttri skrá.

Sjálfvirk afkóðun efnisins bætir við annarri aðgreiningu. Content-Length lýsir yfirleitt þjöppuðu framsetningunni, en PHP-strengurinn getur innihaldið afþjöppuð bæti. Að bera strlen($body) saman við þann haus ber saman ólíkar framsetningar.

cURL getur tilkynnt CURLE_PARTIAL_FILE þegar flutningurinn brýtur væntan stærð. Varðveittu þá villu í stað þess að líta á hvaða ekki-tóma úttak sem árangur. Hins vegar getur árangursríkur flutningur með litlu 200-svari verið öll sú síða sem uppruninn eða proxyið valdi að skila.

Að lokum athugaðu nauðsynlegt efni. HTML sem cURL sækir keyrir ekki JavaScript til að fylla síðuna. Hlutar sem vafrinn sýnir geta vantað í upprunalega svarið þótt hvert flutt bæti hafi borist.

Tengdir greinar