Ibda mir-riżultat ta’ cURL meta paġna mniżżla permezz ta’ proxy tidher mhux kompleta. Tweġiba qasira, trasferiment fallut u paġna ta’ blokk sħiħa jeħtieġu spjegazzjonijiet differenti.

B’CURLOPT_RETURNTRANSFER attivat fuq il-handle diġà kkonfigurat:

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

Iġbor dawn il-valuri qabel ma teħles il-handle. Il-paragun strett jiddistingwi falliment tat-trasferiment minn korpi li rnexxew bħal string vojt jew “0”. L-istati ta’ żball HTTP mhumiex awtomatikament fallimenti ta’ curl_exec, għalhekk interpreta wkoll l-istat.

Il-kontatur tat-tniżżil ma jinkludix headers. Il-valur iddikjarat ġej minn Content-Length u huwa -1 meta dak id-daqs ma jkunx magħruf. Tweġiba tista’ b’mod leġittimu tħalli barra Content-Length; valur mhux magħruf mhuwiex dijanjosi ta’ fajl maqtugħ.

Id-dekodifikazzjoni awtomatika tal-kontenut iżżid distinzjoni oħra. Content-Length normalment jiddeskrivi r-rappreżentazzjoni kompressa, filwaqt li l-string PHP tista’ jkun fiha bytes dekompressi. Li tqabbel strlen($body) ma’ dak il-header ifisser li tqabbel rappreżentazzjonijiet differenti.

cURL jista’ jirrapporta CURLE_PARTIAL_FILE meta t-trasferiment jikser daqs mistenni. Ippreserva dak l-iżball minflok ma tqis kull output mhux vojt bħala suċċess. Bil-maqlub, trasferiment li rnexxa b’tweġiba 200 żgħira jista’ jkun il-paġna kollha li l-oriġini jew il-proxy għażlu li jirritornaw.

Fl-aħħar iċċekkja l-kontenut meħtieġ. HTML li jġib cURL ma jesegwix JavaScript biex jimla l-paġna. Taqsimiet li turi l-browser jistgħu jkunu neqsin mit-tweġiba oriġinali anki meta kull byte mibgħut wasal.

Artikli relatati