ចាប់ផ្តើមពីលទ្ធផល cURL នៅពេលដែលទំព័រដែលបានទាញយកតាម proxy មើលទៅមិនពេញលេញ។ ការឆ្លើយតបខ្លី ការផ្ទេរបរាជ័យ និងទំព័របិទពេញលេញ ត្រូវការការពន្យល់ផ្សេងគ្នា។

នៅពេល CURLOPT_RETURNTRANSFER បើកនៅលើ 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);

ប្រមូលតម្លៃទាំងនេះមុនពេលដោះលែង handle។ ការប្រៀបធៀបតឹងរឹងបែងចែកការបរាជ័យផ្ទេរចេញពីតួជោគជ័យ ដូចជាខ្សែអក្សរទទេ ឬ “0”។ ស្ថានភាពកំហុស HTTP មិនមែនជាការបរាជ័យ curl_exec ដោយស្វ័យប្រវត្តិទេ ដូច្នេះត្រូវបកស្រាយស្ថានភាពផងដែរ។

កម្មវិធីរាប់ទិន្នន័យទាញយកមិនរាប់បញ្ចូល header ទេ។ តម្លៃដែលបានប្រកាសមកពី Content-Length ហើយជា -1 នៅពេលទំហំមិនស្គាល់។ ការឆ្លើយតបអាចបោះបង់ Content-Length ដោយស្របច្បាប់។ តម្លៃមិនស្គាល់មិនមែនជាការធ្វើរោគវិនិច្ឆ័យឯកសារកាត់ខ្លីទេ។

ការឌិកូដមាតិកាស្វ័យប្រវត្តិបន្ថែមភាពខុសគ្នាមួយទៀត។ Content-Length ជាធម្មតាពិពណ៌នាការតំណាងដែលបានបង្ហាប់ ខណៈដែលខ្សែអក្សរ PHP អាចមាន byte ដែលបានបើក។ ការប្រៀបធៀប strlen($body) ជាមួយ header នោះគឺប្រៀបធៀបការតំណាងផ្សេងគ្នា។

cURL អាចរាយការណ៍ CURLE_PARTIAL_FILE នៅពេលការផ្ទេរបំពានទំហំដែលរំពឹងទុក។ រក្សាកំហុសនោះ ជំនួសឱ្យការចាត់ទុកទិន្នផលមិនទទេថាជាជោគជ័យ។ ផ្ទុយទៅវិញ ការផ្ទេរជោគជ័យជាមួយការឆ្លើយតប 200 តូច អាចជាទំព័រទាំងមូលដែលប្រភព ឬ proxy បានជ្រើសផ្ញើមកវិញ។

ចុងក្រោយ ពិនិត្យមាតិកាដែលត្រូវការ។ HTML ដែល cURL ទាញបានមិនដំណើរការ JavaScript ដើម្បីបំពេញទំព័រទេ។ ផ្នែកដែលកម្មវិធីរុករកបង្ហាញអាចអវត្តមានពីការឆ្លើយតបដើម ទោះបីជា byte ដែលបានផ្ញើទាំងអស់បានមកដល់ក៏ដោយ។

អត្ថបទពាក់ព័ន្ធ