آیا ځواب د PHP cURL پرې شوی و؟
د ډاونلوډ شوې اندازې له Content-Length سره د پرتله کولو دمخه د cURL د لېږد پایله، د ځواب حالت او د بدن استازیتوب وګورئ.
کله چې د پروکسي له لارې ډاونلوډ شوې پاڼه نیمګړې ښکاري، د 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 ځواب سره کولای شي ټوله هغه پاڼه وي چې سرچینې یا پروکسي یې د بیرته راګرځولو انتخاب کړی و.
په پای کې اړین منځپانګه وګورئ. هغه HTML چې cURL راوړي د پاڼې د ډکولو لپاره JavaScript نه چلوي. هغه برخې چې براوزر ښیې کېدای شي په اصلي ځواب کې نه وي، حتی کله چې هر لېږل شوی بایټ رسېدلی وي.