Fänkt mam Resultat vun cURL un, wann eng Säit, déi iwwer e Proxy erofgeluede gouf, onvollstänneg ausgesäit. Eng kuerz Äntwert, en net gelungenen Transfer an eng komplett Blockéiersäit brauche verschidde Erklärungen.

Mat ageschaltem CURLOPT_RETURNTRANSFER um bestoeenden agerichteten 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);

Sammelt dës Wäerter, ier Dir den Handle fräigitt. De strikte Verglach ënnerscheet en Transferfehler vun erfolgreiche Bodyen wéi enger eideler Zeecheketten oder “0”. HTTP-Feelerstatusse sinn net automatesch curl_exec-Feeler, dofir interpretéiert och de Status.

De Compteur fir erofgelueden Daten enthält keng Headeren. De deklaréierte Wäert kënnt aus Content-Length a ass -1, wann d’Gréisst onbekannt ass. Eng Äntwert däerf Content-Length legal ewechloossen; en onbekannte Wäert ass keng Diagnos vun enger ofgeschniddener Datei.

Déi automatesch Inhaltdecodéierung bréngt nach eng Ënnerscheedung. Content-Length beschreift meeschtens déi kompriméiert Duerstellung, während den PHP-String dekompriméiert Byte kënnen enthalen. Strlen($body) mat deem Header ze vergläichen vergläicht dann ënnerschiddlech Duerstellungen.

cURL kann CURLE_PARTIAL_FILE mellen, wann den Transfer eng erwaarde Gréisst verletzt. Behält dëse Fehler, amplaz all net-eidelen Output als Erfolleg ze betruechten. Ëmgedréint kann en erfolgreichen Transfer mat enger klenger 200-Äntwert déi ganz Säit sinn, déi den Ursprong oder de Proxy decidéiert huet zréckzeginn.

Schliisslech préift den néidegen Inhalt. HTML, dee vum cURL geholl gëtt, féiert kee JavaScript aus, fir d’Säit ze fëllen. Deeler, déi de Browser weist, kënnen an der ursprénglecher Äntwert feelen, och wann all iwwerdroe Byte ukomm ass.

Ähnlech Artikelen