Begin by cURL se resultaat wanneer ’n bladsy wat deur ’n proxy afgelaai is onvolledig lyk. ’n Kort antwoord, ’n mislukte oordrag en ’n volledige blokkeerblad het verskillende verklarings nodig.

Met CURLOPT_RETURNTRANSFER aktief op die bestaande opgestelde handvatsel:

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

Versamel hierdie waardes voordat jy die handvatsel vrylaat. Die streng vergelyking onderskei ’n oordragfout van geslaagde liggame soos ’n leë string of “0”. HTTP-foutstatusse is nie outomaties curl_exec-foute nie, dus interpreteer ook die status.

Die afgelaaide teller sluit koptekste uit. Die verklaarde waarde kom uit Content-Length en is -1 wanneer daardie grootte onbekend is. ’n Antwoord mag Content-Length wettig weglaat; ’n onbekende waarde is nie ’n diagnose van ’n afgekapte lêer nie.

Outomatiese inhouddekodering bring nog ’n onderskeid. Content-Length beskryf gewoonlik die saamgeperste voorstelling, terwyl die PHP-string gedecomprimeerde grepe kan bevat. Om strlen($body) met daardie koptekst te vergelyk, vergelyk dan verskillende voorstellings.

cURL kan CURLE_PARTIAL_FILE rapporteer wanneer die oordrag ’n verwagte grootte oortree. Bewaar daardie fout eerder as om enige nie-leë uitset as sukses te beskou. Omgekeerd kan ’n geslaagde oordrag met ’n klein 200-antwoord die hele bladsy wees wat die oorsprong of die proxy gekies het om terug te gee.

Laastens kontroleer die vereiste inhoud. HTML wat deur cURL opgehaal word, voer nie JavaScript uit om die bladsy te vul nie. Ontbrekende dele wat die blaaier sou weergee, kan in die oorspronklike antwoord afwesig wees selfs wanneer elke versende greep aangekom het.

Verwante artikels