Anza na matokeo ya cURL wakati ukurasa uliopakuliwa kupitia proksi unaonekana haujakamilika. Jibu fupi, uhamishaji ulioshindikana na ukurasa kamili wa kuzuia huhitaji maelezo tofauti.

Wakati CURLOPT_RETURNTRANSFER imewashwa kwenye handle iliyosanidiwa tayari:

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

Kusanya thamani hizi kabla ya kuachilia handle. Ulinganisho mkali hutofautisha kushindikana kwa uhamishaji na miili iliyofanikiwa kama mfuatano tupu au “0”. Hali za hitilafu za HTTP si kushindikana kwa curl_exec kiotomatiki, kwa hiyo tafsiri pia hali.

Kihesabu cha data iliyopakuliwa hakihesabu vichwa. Thamani iliyotangazwa inatoka kwa Content-Length na ni -1 wakati ukubwa huo haujulikani. Jibu linaweza kuacha Content-Length kihalali; thamani isiyojulikana si utambuzi wa faili iliyokatwa.

Usimbuaji wa maudhui kiotomatiki huleta tofauti nyingine. Content-Length kwa kawaida huelezea uwakilishi uliobanwa, ilhali mfuatano wa PHP unaweza kuwa na baiti zilizofunguliwa. Kulinganisha strlen($body) na kichwa hicho huhusisha kulinganisha uwakilishi tofauti.

cURL inaweza kuripoti CURLE_PARTIAL_FILE wakati uhamishaji unakiuka ukubwa unaotarajiwa. Hifadhi hitilafu hiyo badala ya kuchukua matokeo yoyote yasiyo tupu kama mafanikio. Kinyume chake, uhamishaji uliofanikiwa na jibu dogo la 200 unaweza kuwa ukurasa wote ambao chanzo au proksi ilichagua kurudisha.

Mwishowe angalia maudhui yanayohitajika. HTML inayoletwa na cURL haiendeshi JavaScript kujaza ukurasa. Sehemu ambazo kivinjari huonyesha zinaweza kukosekana kwenye jibu la awali hata kila baiti iliyotumwa imefika.

Makala zinazohusiana