PHP ပရိုဂရမ်တွင် curl သည် HTTP တောင်းဆိုမှုများကိုစတင်ရန်အလွန်အသုံးများသောကိရိယာတစ်ခုဖြစ်သည်။ အထူးသဖြင့်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းစတင်ရန်လိုအပ်သည့်အခါ curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုပြုလုပ်နိုင်သည်။ သို့သော်လူအများစုက curl_multi_close နှင့် curl_init ကို အသုံးပြုသောအခါမေးခွန်းရှိနိုင်သည် - curl_mamulti_close သည် တစ်ပြိုင်နက်တည်းထိရောက်မှုကိုသက်ရောက်သလား။ ဒီအခြေအနေကိုကျွန်ုပ်တို့ဘယ်လိုပိုကောင်းအောင်လုပ်သင့်သလဲ။ ထို့နောက်ကျွန်ုပ်တို့သည်ဤပြ problem နာကိုအသေးစိတ်ခွဲခြမ်းစိတ်ဖြာပြီး optimization ဖြေရှင်းချက်ကိုဆွေးနွေးပါမည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည်ဤလုပ်ဆောင်မှုနှစ်ခု၏အခန်းကဏ် and ကိုနားလည်ရန်လိုအပ်သည်။ သူတို့အတူတကွမည်သို့အလုပ်လုပ်သည်ကိုနားလည်ရန်လိုအပ်သည်။
Curl_init - ဆံပင်ကောက်ကောက်စာများကိုကိုင်တွယ်ဖြေရှင်းပြီး curl အရင်းအမြစ်ကိုပြန်ပို့ရန်အသုံးပြုသည်။ ဤအရင်းအမြစ်သည်နောက်ဆက်တွဲဆံပင်ကောက်ကောက်လုပ်ငန်းများတွင်တောင်းဆိုမှုများကိုပေးပို့ရန်အသုံးပြုလိမ့်မည်။
curl_mamulti_close : မျိုးစုံဆံပင်ကောက်ကောက်ကိုပိတ်ရန်အသုံးပြုခဲ့သည်။ curl_multi_ * function ကိုသုံးသောအခါကျွန်ုပ်တို့သည်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းကစတင်လုပ်ဆောင်နိုင်ပြီး curl_multi_close သည် အဓိကအားဖြင့်ဖွင့်လှစ်ထားသော curl session forms အားလုံးကိုပိတ်ထားသည်။
$multiHandle = curl_multi_init(); // မျိုးစုံလက်ကိုင်အစပျိုး
$ch1 = curl_init("http://example.com"); // ပထမ ဦး ဆုံးတ ဦး တည်းအစပျိုးcURLမေးမြန်း
curl_multi_add_handle($multiHandle, $ch1); // ထည့်သည်multiလက်ကိုင်
// 可以添加更多的မေးမြန်း
$ch2 = curl_init("http://example2.com");
curl_multi_add_handle($multiHandle, $ch2);
// 执行并发မေးမြန်း
do {
$status = curl_multi_exec($multiHandle, $active);
} while ($active);
// session ကိုပိတ်ပါ
curl_multi_remove_handle($multiHandle, $ch1);
curl_multi_remove_handle($multiHandle, $ch2);
curl_multi_close($multiHandle); // မျိုးစုံအစည်းအဝေးများပိတ်ပါ
အထက်ဖော်ပြပါအချက်သည်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည် ။
curl_multi_close ရှိမရှိ၏သော့ချက်သည်တစ်ပြိုင်နက်တည်းက ပါတ်သက်. ၎င်း၏အခန်းကဏ် beching ်ဌာန်းချက်ကိုနားလည်ခြင်း၌တည်ရှိသည်။ curl_multi_close သည် curl session ၏လက်ကိုင်ကိုပိတ်ထားရုံသာမကတောင်းဆိုချက်၏ကွပ်မျက်မှုစွမ်းဆောင်ရည်ကိုတိုက်ရိုက်မထိခိုက်ပါ။
တစ်ပြိုင်နက်တည်းစွမ်းဆောင်ရည်အပေါ်အကျိုးသက်ရောက်သည့်အကြောင်းပြချက်များ - အဓိကစွမ်းဆောင်ရည်မြှင့်တင်ရေးသည်များသောအားဖြင့် function curl_mamulti_exec ၏လုပ်ဆောင်မှုကိုပြုလုပ်နေစဉ်အတွင်းဖြစ်သည်။ curl_multi_exec သည် တစ်ပြိုင်နက်တည်း curl တောင်းဆိုမှုများကိုစီမံခန့်ခွဲသည်။ ပြီးစီးသည်ကိုစစ်ဆေးသည်။ ဤလုပ်ငန်းစဉ်၏စွမ်းဆောင်ရည်သည်အချက်များစွာကြောင့်ဖြစ်သည်။
ကွန်ယက် latency နှင့် bandwidth
curl တောင်းဆိုမှုအချိန်ကုန်အချိန်
ဆာဗာတုံ့ပြန်မှုအချိန်
ဆာဗာသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထောက်ပံ့ပါသလား
curl_multi_close ၏အကျိုးသက်ရောက်မှု - curl_multi_close ၏အကျိုးသက်ရောက်မှုသည်တောင်းဆိုမှုများပြီးဆုံးပြီးနောက်အရင်းအမြစ်များကိုထုတ်လွှတ်ရန်ဖြစ်သည်။ ၎င်းသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှု၏ကွပ်မျက်မှုအပေါ်ဆိုးကျိုးသက်ရောက်ခြင်းမရှိပါ။ တစ်ပြိုင်တည်းတောင်းဆိုမှုများကိုကိုင်တွယ်သောအခါ curl_multi_close သည်တောင်းဆိုမှုပြီးဆုံးပြီးနောက်မှတ်ဉာဏ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်သက်ဆိုင်ရာမှတ်ဉာဏ်နှင့်လက်ကိုင်အရင်းအမြစ်များကိုထုတ်ပြန်ခဲ့သည်။ ထို့ကြောင့် curl_multi_close ကိုယ်တိုင်ကတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများ၏ထိရောက်မှုကိုမထိခိုက်ပါ။
curl_multi_close ကိုယ်တိုင်ကတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုတိုက်ရိုက်အကျိုးသက်ရောက်မှုမရှိပါ။
ပေါင်းစည်းခြင်းတောင်းဆိုမှု - တောင်းဆိုမှုများစွာသည်တူညီသောဒိုမိန်းအမည်ကို 0 င်ရောက်နိုင်ပါကတောင်းဆိုမှုများကိုလျှော့ချရန်ပေါင်းစည်းရန်တောင်းဆိုမှုများကိုသင်စဉ်းစားနိုင်သည်။ ဥပမာအားဖြင့်, အကယ်. သင်သည်မတူညီသော API အဆုံးမှတ်ကိုတောင်းခံပါကဤတောင်းဆိုမှုများကိုသင်တောင်းဆိုမှုများကို API တောင်းဆိုမှုတစ်ခုသို့တိုးချဲ့နိုင်ပါသလား။
သင့်လျော်သောအချိန်ကုန်ကိုသတ်မှတ်ခြင်း - သင့်တော်သောအချိန်ကုန်ခံခြင်းကိုအသုံးပြုခြင်းအလွန်အကျွံစောင့်ဆိုင်းခြင်းကြောင့်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုရှောင်ရှားနိုင်သည်။ တောင်းဆိုမှုအတွက်အများဆုံးစောင့်ဆိုင်းရသောအချိန်ကို curlopt_timeout နှင့် curlopt_connectimeout မှသတ်မှတ်နိုင်သည်။
curl_setopt($ch1, CURLOPT_TIMEOUT, 30); // 设置မေးမြန်း的最大执行时间为30စက်ဏန့်
သင့်လျော်သောတစ်ပြိုင်နက်တည်းကန့်သတ်ချက်များ - ဆံပင်ကောက်ကောက်သည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထောက်ခံသော်လည်းတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထိန်းချုပ်သင့်သည်။ များစွာသောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများသည်စနစ်အရင်းအမြစ်များကိုအလွန်အကျွံစားသုံးရန် ဦး ဆောင်လမ်းပြပေးလိမ့်မည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုဆာဗာစွမ်းဆောင်ရည်နှင့်ကွန်ယက် bandwidth အရကျိုးကြောင်းဆီလျော်ချိန်ညှိနိုင်သည်။
Persistent Connections ကိုအသုံးပြုခြင်း - ဆာဗာတစ်ခုတည်းကိုတောင်းခံသည့်အခါ TCP ဆက်သွယ်မှုများကိုတည်ထောင်ရန်အချိန်ကိုလျှော့ချရန်အမြဲတမ်းဆက်သွယ်မှုများကိုပြုလုပ်နိုင်သည်။
curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true); // မြဲ connection များကို enable
ညာဘက်ဒိုမိန်းအမည်ကိုရွေးချယ်ပါ။ မြန်ဆန်သောတုံ့ပြန်မှုဖြစ်သောဆာဗာဒိုမိန်းအမည်ကိုရွေးချယ်ပြီးတောင်းဆိုမှုမြန်နှုန်းကိုတိုးတက်စေရန်မြင့်မားသောတည်ငြိမ်မှုကိုရွေးချယ်ပါ။ အကယ်. သင်၏တောင်းဆိုချက်သည်ပြင်ပဆာဗာတစ်ခုကိုရယူနေပါက GitBox.net ကို သုံး. တုန့်ပြန်မှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်မူရင်းဒိုမိန်းအမည်ကိုအစားထိုးရန်သင်အသုံးပြုနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သော DNS resolution နှင့် cache ဆိုင်ရာမူဝါဒများအားဖြင့်လက်လှမ်းမီမှုန့်ကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။
curl_mamulti_close ကိုယ်တိုင်ကတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများ၏ထိရောက်မှုကိုတိုက်ရိုက်မပါ 0 င်ပါ။ တစ်ပြိုင်နက်တည်းအကျိုးသက်ရောက်စေသောအချက်များမှာတောင်းဆိုထားသောကွန်ယက် latency, bandwidth, timeout settings နှင့်တောင်းဆိုမှုများအရေအတွက်ပါဝင်သည်။ ကျိုးကြောင်းဆီလျော်သောအကောင်းမြင်ရန်တောင်းဆိုမှုများကိုပေါင်းစည်းခြင်း, တစ်ပြိုင်နက်တည်းငွေပမာဏကိုထိန်းချုပ်ခြင်း, သင့်လျော်သောအချိန်ကုန်အချိန်သတ်မှတ်ခြင်းစသည့်ကျိုးကြောင်းဆီလျော်သောအကောင်းဆုံးနည်းဗျူဟာများဖြင့်တဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများ၏ထိရောက်မှုကိုထိထိရောက်ရောက်တိုးတက်စေနိုင်သည်။
ဤဆောင်းပါးသည်သင့်အားကူညီပေးပြီး curlti_multi_clock ကို မည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်နှင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်ကိုနားလည်ရန်မျှော်လင့်ပါသည်။