Curl စာကြည့်တိုက်ကိုအသုံးပြုသောအခါ PHP developer များသည်မပြည့်စုံသော output နှင့်ပြ problems နာများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ကောက်ကောက်သည်ဆာဗာနှင့်ဆက်သွယ်ရန် HTTP တောင်းဆိုမှုများကိုပို့ရန်အလွန်အားကောင်းသည့် PHP တိုးချဲ့စာကြည့်တိုက်ဖြစ်သည်။ သို့သော်တစ်ခါတစ်ရံဆာဗာမှပြန်လာသောအချက်အလက်များသည်မပြည့်စုံသောရလဒ်များရရှိခြင်းဖြစ်သည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကျိုးအမြတ်ဖြစ်ရပ်များကိုစူးစမ်းလေ့လာပြီးထိရောက်သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
ကောက်ကောက်ကို အသုံးပြု. HTTP တောင်းဆိုမှုများကိုပို့သောအခါအောက်ပါအကြောင်းပြချက်များကြောင့်ပြန်လာသောအချက်အလက်များသည်မပြည့်စုံနိုင်ပါ။
1 ။ ဆာဗာတုန့်ပြန်မှုအချိန်ကုန်။ အကယ်. ဆာဗာသည်သတ်မှတ်ထားသောအချိန်အတွင်းအပြည့်အဝအချက်အလက်များကိုမပြန်ပါက curl သည် convert ကိုဖြတ်တောက်ခြင်း, ဒေတာများကိုဖြစ်ပေါ်စေသည်။
2 ။ ပါ 0 င်မှုအရှည်ကန့်သတ်ချက် - ပုံမှန်အားဖြင့်ကောက်ရိုးကောက်ကောက်သည်ပြန်လာသောအချက်အလက်ပမာဏကိုကန့်သတ်လိမ့်မည်။ ဆာဗာမှပြန်လာသောအချက်အလက်သည်ဤကန့်သတ်ချက်ထက်ကျော်လွန်သောအခါဒေတာ output သည်မပြည့်စုံနိုင်သည်။
3 ။ compression encoding ပြ problem နာ: ဆာဗာ compressed encoding (ထိုကဲ့သို့သော gzip) ကိုအသုံးပြုပါကဒေတာများကိုမှန်ကန်စွာ decompress မလုပ်ပါကကောက်ကောက်ဖြင့်ပြန်လာသောအချက်အလက်များလည်းမပြည့်စုံပါ။
မပြည့်စုံသောဆံပင်ကောက်ကောက် output ၏ပြ problem နာကိုဖြေရှင်းရန်အောက်ပါနည်းလမ်းများကိုသင်ယူနိုင်သည်။
ပထမ ဦး စွာသင်ဖြည့်စွက်ထားသောအချက်အလက်များကိုပြန်ပို့ရန်အချိန်အလုံအလောက်ရှိစေရန် curlopt_ToOut နှင့် curlopt_connectime ကို setting အားဖြင့်သင် curlopt_connectime ကိုချမှတ်ခြင်းအားဖြင့် curlopt_connectime ကိုချိန်ညှိခြင်းအားဖြင့်သင်ခန်းစာကိုတိုးမြှင့်နိုင်သည်။
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
ဤကျင့် 0 တ်ပါ 0 င်သည့်ဥပမာတွင်စက္ကန့် 30 အထိအချိန်ကုန်ခြင်းအားသတ်မှတ်ခြင်းသည်တောင်းဆိုမှုကိုလုပ်ဆောင်ရန်အချိန်အလုံအလောက်နှင့်ချိတ်ဆက်နိုင်သည်။
အကယ်. ဆံပင်ကောက်ကောက် output ကိုကန့်သတ်ထားပါက curlopt_Returntransfer နှင့် curlopt_maxredirs options များကို setting ဖြင့်သင်ပြန်လာသောအကြောင်းအရာ၏ကန့်သတ်ချက်ကိုချိန်ညှိနိုင်သည်။
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
curl_close($ch);
ဤကုဒ်သည် curlopt_Returnturtransfer ကို သတ်မှတ်ပြီး redirects အများဆုံးအရေအတွက်ကိုထိန်းချုပ်ရန် curlopt_maxredirs များကို ချိန်ညှိသည်။
ဆာဗာမှပြန်လာသောအချက်အလက်များကိုချုံ့သည်ဆိုပါက (ဥပမာ gzip encoding ကိုအသုံးပြုခြင်း) ကိုသင်ဤအချက်အလက်များကိုအပြည့်အဝရယူရန်ဤအချက်အလက်များကို decompress လုပ်ထားကြောင်းသေချာစေရန်လိုအပ်သည်။ compressed data များကို curlopt_encoding ကို ချိန်ညှိခြင်းဖြင့်ပြုလုပ်နိုင်သည်။
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
$result = curl_exec($ch);
curl_close($ch);
ဒီဥပမာမှာ curlopt_encoding ကို 'gzip' ကိုသတ်မှတ်ခြင်းအားဖြင့်အပြည့်အဝ output ကိုသေချာစေရန်ပြန်လာသောဒေတာများကိုအလိုအလျောက် decomatch လိမ့်မည်။
PHP Curl ကိုအသုံးပြုသောအခါမပြည့်စုံသော output နှင့်အတူပြ problems နာများကြုံတွေ့ရရန်အဆန်းမဟုတ်ချေ။ Curl ၏အချိန်ကုန်အချိန်, အကြောင်းအရာအရှည်ကန့်သတ်ချက်နှင့်ချုံ့ထားသောအချက်အလက်များကိုပြုပြင်ခြင်းအားဖြင့်ဤပြ problem နာကိုထိထိရောက်ရောက်ဖြေရှင်းနိုင်သည်။ ဤဆောင်းပါးတွင်ဖော်ပြထားသောနည်းလမ်းများစွာမှတစ်ဆင့်ဤဆောင်းပါးတွင်ဖော်ပြထားသောနည်းစနစ်များကသင့်အားဆံပင်ကောက်ကောက်ကိုပိုမိုကောင်းမွန်စွာအသုံးပြုရန်ကူညီပေးနိုင်ပြီး server reality data များကိုသင်ရရှိစေရန်ကူညီနိုင်သည်။