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 မအောင်မြင်မှု မဟုတ်သဖြင့် အခြေအနေကိုလည်း အနက်ဖွင့်ပါ။
ဒေါင်းလုပ်ကောင်တာတွင် header များ မပါဝင်ပါ။ ကြေညာထားသော တန်ဖိုးသည် Content-Length မှ လာပြီး အရွယ်အစား မသိရသောအခါ -1 ဖြစ်သည်။ တုံ့ပြန်မှုသည် Content-Length ကို တရားဝင် ချန်လှပ်နိုင်သည်။ မသိသော တန်ဖိုးသည် ဖြတ်တောက်ခံထားရသော ဖိုင်၏ ရောဂါရှာဖွေတွေ့ရှိမှု မဟုတ်ပါ။
အလိုအလျောက် အကြောင်းအရာ ကုဒ်ဖျက်ခြင်းသည် နောက်ထပ် ခြားနားချက်တစ်ခု ထပ်တိုးသည်။ Content-Length သည် များသောအားဖြင့် ချုံ့ထားသော ကိုယ်စားပြုမှုကို ဖော်ပြပြီး PHP စာတန်းတွင် ဖြည်ထားသော byte များ ပါနိုင်သည်။ strlen($body) ကို ထို header နှင့် နှိုင်းယှဉ်ခြင်းသည် မတူညီသော ကိုယ်စားပြုမှုများကို နှိုင်းယှဉ်ခြင်း ဖြစ်သည်။
လွှဲပြောင်းမှုသည် မျှော်လင့်ထားသော အရွယ်အစားကို ချိုးဖောက်သောအခါ cURL သည် CURLE_PARTIAL_FILE ကို အစီရင်ခံနိုင်သည်။ အလွတ်မဟုတ်သော ထွက်ရှိမှုတိုင်းကို အောင်မြင်မှုအဖြစ် မသတ်မှတ်ဘဲ ထို အမှားကို ထိန်းသိမ်းပါ။ ဆန့်ကျင်ဘက်အားဖြင့် သေးငယ်သော 200 တုံ့ပြန်မှုနှင့် အောင်မြင်သော လွှဲပြောင်းမှုသည် မူလရင်းမြစ် သို့မဟုတ် ပရောက်စီ ပြန်ပေးရန် ရွေးချယ်ခဲ့သော စာမျက်နှာတစ်ခုလုံး ဖြစ်နိုင်သည်။
နောက်ဆုံးတွင် လိုအပ်သော အကြောင်းအရာကို စစ်ဆေးပါ။ cURL ယူလာသော HTML သည် စာမျက်နှာကို ဖြည့်ရန် JavaScript ကို မလုပ်ဆောင်ပါ။ ဘရောက်ဇာက ပြသော အပိုင်းများသည် ပို့ထားသော byte တိုင်း ရောက်ရှိပြီးဖြစ်သော်လည်း မူလတုံ့ပြန်မှုတွင် မပါဝင်နိုင်ပါ။