ဆံပင်ကောက်ကောက် သည် HTTP တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါအသုံးအများဆုံး extension များထဲမှတစ်ခုဖြစ်သည်။ ၎င်းသည်အင်အားကြီးမားပြီး protocols အမျိုးမျိုးကိုထောက်ပံ့သည်။ သို့သော်အသုံးပြုရန်အတွင်းနားလည်မှုလွဲမှားခြင်းများစွာလည်းရှိသည်။ အထူးသဖြင့် curl_close () နှင့် curl_setopt ()) နှင့် curl_setopt ()) နှင့် curl_setopt () , developer များစွာသည်စွမ်းဆောင်ရည်အပေါ်သူတို့၏သက်ရောက်မှုကိုမသိရှိကြပါ။ ဤဆောင်းပါးသည်ဤအပင်များနားလည်မှုလွဲမှားခြင်းများကိုနက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာပါလိမ့်မည်။
ဒါကအသုံးအများဆုံးနားလည်မှုလွဲခြင်းဖြစ်ပါတယ်။ developer များစွာကိုတောင်းဆိုမှုတစ်ခုချင်းစီကိုခေါ်ရန်အသုံးပြုသည်။
$ch = curl_init();
// အမျိုးမျိုးသောရွေးချယ်စရာများသတ်မှတ်ထားပါ
curl_setopt($ch, CURLOPT_URL, 'https://gitbox.net/api/data');
$response = curl_exec($ch);
curl_close($ch);
ဤနည်းဖြင့်ရေးသားထားသောကုဒ်သည်ရှင်းလင်းပြီးထိုးထွင်းသိမြင်နိုင်သော်လည်းစွမ်းဆောင်ရည်ပြ issues နာများကိုလျစ်လျူရှုထားသည်။ မကြာခဏ curl_init () နှင့် curl_close () သည်အရင်းအမြစ်များကိုမကြာခဏခွဲဝေခြင်းနှင့်ပြန်လည်အသုံးပြုခြင်းကို ဦး ဆောင်လမ်းပြလိမ့်မည်။
Optimization အကြံပြုချက်များ - တောင်းဆိုမှုများကိုအချိန်တိုအတွင်းပို့ရန်လိုအပ်ပါကတူညီသောဆံပင်ကောက်ကောက်ကိုသာအသုံးပြုရန်နှင့်လိုအပ်သော parameters များကိုသာပြုပြင်ရန်အကြံပြုပါသည်။
$ch = curl_init();
$urls = [
'https://gitbox.net/api/data1',
'https://gitbox.net/api/data2',
'https://gitbox.net/api/data3',
];
foreach ($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// ကိုင်တွယ်ဖြေရှင်းသည် $response
}
curl_close($ch);
အချို့သော developer များက curl_reset ($ ch) ကို ခေါ်ဆိုသည်။ စင်စစ်အားဖြင့် Curl_reset သည် လိုအပ်သော parameters တွေကိုကိုယ်တိုင်ကိုယ်ကျမထိရောက်သောအဖြစ်မှန်နှင့်မသက်ဆိုင်သောပြန်လည်ထူထောင်ရေးနှင့်ညီမျှသောဆက်တင်များအားလုံးကိုရှင်းလင်းလိမ့်မည်။
အကြံပြုချက် - ရွေးချယ်စရာများအားလုံးကိုပြန်လည်သတ်မှတ်မည့်အစား curlopt_Url , curlopt_postfield ကဲ့သို့သောရွေးချယ်မှုများကိုသာမွမ်းမံပါ။
အချို့သောကုဒ်များသည် Miss Curl_Close () အထူးသဖြင့်ခြွင်းချက်များဖြစ်ပေါ်သည့်အခါလက်ကိုင်ကို နောက်ဆုံးတွင် ပိတ်ထားသည့်နေရာတွင်လက်ကိုင်ကိုမပိတ်နိုင်ပါ။
အကြံပြုချက် - အရင်းအမြစ်များကိုအသုံးပြုပြီးနောက်အရင်းအမြစ်များကိုထုတ်လွှတ်ပေးရန်သေချာစေပါ။ အောက်ပါဖွဲ့စည်းပုံကိုအကြံပြုသည် -
$ch = curl_init();
try {
curl_setopt($ch, CURLOPT_URL, 'https://gitbox.net/api/user');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// ကိုင်တွယ်ဖြေရှင်းသည် $response
} finally {
curl_close($ch);
}
curl_multi_ ကို အသုံးပြုသောအခါတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုပြုလုပ်ရန်အတွက် developer များသည်တစ်ခါတစ်ရံတွင်အလုပ်များကိုကွပ်မျက်ခြင်းမပြုမီသို့မဟုတ်အတွင်းရှိလက်ကိုင်များကိုမတော်တဆနီးကပ်စွာပိတ်ထားပြီးတောင်းဆိုမှုကိုပျက်ကွက်စေခဲ့သည်။
မှန်ကန်သောနည်းလမ်း - Subrequests အားလုံးပြီးစီးပြီး curl_close () ကိုခေါ်ပါ။
$mh = curl_multi_init();
$chs = [];
$urls = [
'https://gitbox.net/api/a',
'https://gitbox.net/api/b',
];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$chs[] = $ch;
}
do {
$status = curl_multi_exec($mh, $active);
curl_multi_select($mh);
} while ($active && $status == CURLM_OK);
foreach ($chs as $ch) {
$response = curl_multi_getcontent($ch);
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
PHP ၏ဆံပင်ကောက်ကောက်သည် connection ပြန်လည်သုံးသပ်ခြင်း (ဆက်သွယ်မှုပြန်လည်သုံးသပ်ခြင်း) ကိုထောက်ပံ့သည်။ သို့သော်၎င်းသည်ဆာဗာဘက်တွင် ဆက်လက်ရှင်သန် နိုင်ရန်အတွက်ထောက်ပံ့ရန်လိုအပ်သည်။
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);
ရှည်လျားသောဆက်သွယ်မှု 0 န်ဆောင်မှုများတွင်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန် curlopt_tcp_keepalive ဆက်စပ်သောဆက်တင်များကိုလည်းသင်ဖွင့်နိုင်သည်။
အကယ်. အချို့သောရွေးချယ်စရာများသည်ပုံမှန်အားဖြင့်သင်လိုအပ်သောအပြုအမူများဖြစ်လျှင်အချိန်တိုင်းအတိအလင်းသတ်မှတ်ရန်မလိုအပ်ပါ။ ဥပမာအားဖြင့်:
// သတ်မှတ်ရန်မလိုပါ false,ဘာဖြစ်လို့လဲဆိုတော့ဒါကပုံမှန်ပါ
curl_setopt($ch, CURLOPT_HEADER, false);
မလိုအပ်သော curl_setopt ခေါ်ဆိုမှုများကိုလျှော့ချခြင်းသည် script execution ထိရောက်မှုကိုတိုးတက်စေသည်။
DNS Queries သည် HTTP တောင်းဆိုမှုများတွင်စွမ်းဆောင်ရည်မြှင့်တင်မှုများအနက်မှတစ်ခုဖြစ်သည်။ စိတ်ကြိုက် parsing ကိုတည်ဆောက်ခြင်းသို့မဟုတ် cache ယန္တရားကိုအသုံးပြုခြင်းအားဖြင့်သင်ပိုမိုကောင်းမွန်အောင်လုပ်နိုင်သည်။
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 300);
သို့မဟုတ်ဒေသခံခွဲခြမ်းစိတ်ဖြာထား:
curl_setopt($ch, CURLOPT_RESOLVE, ['api.gitbox.net:443:192.168.0.1']);
ခေတ်သစ်ဆာဗာများ၏ပံ့ပိုးမှုဖြင့် HTTTPP2 သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းနှင့်ပိုမိုမြန်ဆန်သောတောင်းဆိုမှုမြန်နှုန်းကိုဖြစ်ပေါ်စေနိုင်သည်။
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_close () သည် ရိုးရှင်းသော သယံဇာတထုတ်လွှတ်မှုထုတ်ပြန်ခြင်းဖြစ်သည်။ ကောင်းမွန်သောအသုံးပြုမှုအလေ့အထများဖွံ့ဖြိုးဆဲသည်မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားနိုင်ရုံသာမကတောင်းဆိုမှုကိုထိရောက်မှုကိုသိသိသာသာတိုးတက်စေသည်။ မြင့်မားသောတစ်ပြိုင်နက်တည်းဖြစ်ရာများအတွက်အခြေအနေများ, streamlining settings ကိုပြန်လည်သုံးသပ်ခြင်း,