જ્યારે પ્રોક્સી દ્વારા ડાઉનલોડ કરેલું પૃષ્ઠ અપૂર્ણ લાગે ત્યારે 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 ચલાવતું નથી. બ્રાઉઝર જે વિભાગો બતાવે છે તે મોકલેલા દરેક બાઇટ પહોંચ્યા પછી પણ મૂળ પ્રતિસાદમાં ગેરહાજર હોઈ શકે છે.

સંબંધિત લેખો