proxy හරහා බාගත කළ පිටුව අසම්පූර්ණ ලෙස පෙනෙන විට 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 ප්‍රතිචාරයක් සහිත සාර්ථක මාරු කිරීමක් මූලාශ්‍රය හෝ proxy තෝරා ගත් සම්පූර්ණ පිටුව විය හැක.

අවසාන වශයෙන් අවශ්‍ය අන්තර්ගතය පරීක්ෂා කරන්න. cURL ගෙන එන HTML පිටුව පිරවීමට JavaScript ක්‍රියාත්මක නොකරයි. යවන ලද සෑම බයිටයක්ම පැමිණිය ද, බ්‍රවුසරය පෙන්වන කොටස් මුල් ප්‍රතිචාරයේ නොතිබිය හැක.

අදාළ ලිපි