Սկսեք cURL-ի արդյունքից, երբ վստահված սերվերի միջոցով ներբեռնված էջը թերի է թվում։ Կարճ պատասխանը, ձախողված փոխանցումը և ամբողջական արգելափակող էջը տարբեր բացատրություններ են պահանջում։

Երբ գոյություն ունեցող կարգավորված handle-ի վրա միացված է CURLOPT_RETURNTRANSFER-ը՝

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

Հավաքեք այս արժեքները նախքան handle-ը թողնելը։ Խիստ համեմատությունը տարբերում է փոխանցման ձախողումը հաջող մարմիններից, ինչպիսիք են դատարկ տողը կամ “0”-ը։ HTTP սխալի կարգավիճակները ինքնաբերաբար curl_exec-ի ձախողումներ չեն, ուստի մեկնաբանեք նաև կարգավիճակը։

Ներբեռնվածի հաշվիչը չի ներառում վերնագրերը։ Հայտարարված արժեքը գալիս է Content-Length-ից և -1 է, երբ չափը անհայտ է։ Պատասխանը կարող է օրինականորեն բաց թողնել Content-Length-ը. անհայտ արժեքը կտրված ֆայլի ախտորոշում չէ։

Բովանդակության ավտոմատ վերծանումը ներկայացնում է ևս մեկ տարբերություն։ Content-Length-ը սովորաբար նկարագրում է սեղմված ներկայացումը, մինչդեռ PHP տողը կարող է պարունակել ապասեղմված բայթեր։ strlen($body)-ը այդ վերնագրի հետ համեմատելը համեմատում է տարբեր ներկայացումներ։

cURL-ը կարող է հաղորդել CURLE_PARTIAL_FILE, երբ փոխանցումը խախտում է սպասվող չափը։ Պահպանեք այդ սխալը՝ ցանկացած ոչ դատարկ ելք որպես հաջողություն չընդունելու փոխարեն։ Հակառակ դեպքում՝ փոքր 200 պատասխանով հաջող փոխանցումը կարող է լինել այն ամբողջ էջը, որը սկզբնաղբյուրը կամ վստահված սերվերը որոշել է վերադարձնել։

Վերջում ստուգեք անհրաժեշտ բովանդակությունը։ cURL-ով բերված HTML-ը JavaScript չի կատարում էջը լրացնելու համար։ Բրաուզերի ցուցադրած բաժինները կարող են բացակայել սկզբնական պատասխանից, նույնիսկ եթե յուրաքանչյուր փոխանցված բայթ հասել է։

Առնչվող հոդվածներ