Komencu per la rezulto de cURL kiam paĝo elŝutita tra prokurilo ŝajnas nekompleta. Mallonga respondo, malsukcesa transigo kaj kompleta bloka paĝo bezonas malsamajn klarigojn.

Kun CURLOPT_RETURNTRANSFER ŝaltita sur la ekzistanta agordita 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);

Kolektu ĉi tiujn valorojn antaŭ ol liberigi la handle. La strikta komparo distingas transigan malsukceson de sukcesaj korpoj kiel malplena signoĉeno aŭ “0”. HTTP-erarstatusoj ne estas aŭtomate curl_exec-malsukcesoj, do interpretu ankaŭ la statuson.

La elŝuta nombrilo ekskludas kapliniojn. La deklarita valoro venas de Content-Length kaj estas -1 kiam tiu grandeco estas nekonata. Respondo povas laŭleĝe malhavi Content-Length; nekonata valoro ne estas diagnozo de tranĉita dosiero.

Aŭtomata enhavmalĉifrado aldonas alian distingon. Content-Length kutime priskribas la kunpremitan reprezenton, dum la PHP-signoĉeno povas enhavi malĉifritajn bajtojn. Kompari strlen($body) kun tiu kaplinio tiam komparas malsamajn reprezentojn.

cURL povas raporti CURLE_PARTIAL_FILE kiam la transigo malobservas atendatan grandecon. Konservu tiun eraron anstataŭ trakti ajnan ne-malplenan eligon kiel sukceson. Male, sukcesa transigo kun malgranda respondo 200 povas esti la tuta paĝo, kiun la origino aŭ la prokurilo elektis redoni.

Fine kontrolu la postulatan enhavon. HTML akirita de cURL ne plenumas JavaScript por plenigi la paĝon. Sekcioj montrataj de la retumilo povas manki en la origina respondo eĉ kiam ĉiu transdonita bajto alvenis.

Rilataj artikoloj