प्रोक्सीमार्फत डाउनलोड गरिएको पृष्ठ अपूर्ण देखिँदा 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 चलाउँदैन। ब्राउजरले देखाउने खण्डहरू पठाइएको हरेक बाइट आइपुग्दा पनि मूल प्रतिक्रियामा नहुन सक्छन्।

सम्बन्धित लेखहरू