PHP တွင် curl extension သည် client များနှင့်ဆာဗာများအကြားအချက်အလက်များကိုဖလှယ်ရန်ခွင့်ပြုသည့်အလွန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ကျွန်ုပ်တို့သည်များသောအားဖြင့် http တောင်းဆိုမှုများကိုပို့ရန်သို့မဟုတ်ဆာဗာမှအချက်အလက်များရရန် curl ကို အသုံးပြုသည်။ သို့သော်တောင်းဆိုမှုများစွာပြုလုပ်သောအခါဆက်သွယ်မှု၏တည်ထောင်ချိန်ကိုပိုမိုကောင်းမွန်စေရန်အထူးအရေးကြီးသည်။
Curl_upkeep () function သည် http connections များကိုအထူးသဖြင့် http တောင်းဆိုမှုများကိုထိန်းသိမ်းရန်နှင့်မြှင့်တင်ရန်အတွက်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်ဆက်သွယ်မှုကိုမျှော်လင့်သည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်ထူထောင်ရန်, ဆက်သွယ်မှုတည်ဆောက်ခြင်းကြောင့်အငုံစုံကိုလျှော့ချခြင်းအားဖြင့်စွမ်းဆောင်ရည်တိုးတက်လာသည်။ ဤဆောင်းပါးသည် curl_upkeep () နှင့်ဤ function ကိုအသုံးမပြုဘဲအချိန်ကုန်လွန်သည့်ဆက်သွယ်မှုဖန်တီးမှုကိုအသေးစိတ်နှိုင်းယှဉ်လိမ့်မည်။
curl_upkeep () သည်ဆာဗာနှင့်ဆက်နွယ်မှုကိုထိန်းသိမ်းထားသောစိတ်ကြိုက်လုပ်ဆောင်ချက် (သို့မဟုတ်အချို့သောစာကြည့်တိုက်များမှတဆင့်အကောင်အထည်ဖော်သည့်လုပ်ဆောင်မှု) ဖြစ်သည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာ TCP ဆက်သွယ်မှုကိုထပ်ခါတလဲလဲလုပ်ခြင်းကိုလျှော့ချရန်ဖြစ်သည်။
ပုံမှန်အားဖြင့် HTTP protocol သည်နိုင်ငံမဲ့ဖြစ်သည်။ ဆိုလိုသည်မှာတောင်းဆိုမှုတစ်ခုစီအတွက် TCP ဆက်သွယ်မှုအသစ်ကိုတည်ဆောက်သည်။ ဆက်သွယ်မှုကိုအချိန်တိုင်းပြန်လည်တည်ဆောက်ခြင်းကိုရှောင်ရှားရန်အချိန်တိုင်းမှာအကြောင်းအရာအချို့ကိုဆက်လက်ထိန်းသိမ်းထားရန်အချက်များကိုသတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့် curl connection ကို connection ကို setting လုပ်ခြင်းအားဖြင့် Active ကိုစောင့်ရှောက်သည်။
$ch = curl_init();
// တက်ကြွစွာနေရန်ဆက်သွယ်မှု setting
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Connection: keep-alive'
));
// တောင်းဆိုမှုကို execute
$response = curl_exec($ch);
curl_close($ch);
အထက်ပါကုဒ်သည် M66.Net နှင့်ဆက်သွယ်မှုကိုတက်ကြွစွာလုပ်ဆောင်နိုင်ပြီးသင်တောင်းခံသည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်တည်ဆောက်ခြင်းကိုရှောင်ကြဉ်ပါလိမ့်မည်။
Curl_upkeep () ယူဆောင်လာသည့်စွမ်းဆောင်ရည်တိုးတက်မှုများကိုပိုမိုနားလည်နိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်၎င်းကိုအောက်တွင်ဖော်ပြထားသောလက်တွေ့ကျသောဥပမာများနှင့်နှိုင်းယှဉ်ပါမည်။
ဤကိစ္စတွင်တောင်းဆိုမှုတစ်ခုပေးလိုက်သည့်အခါတိုင်း TCP ဆက်သွယ်မှုကိုပြန်လည်တည်ဆောက်ရန်လိုအပ်သည်။ ဤဆက်သွယ်မှုတည်ထောင်ခြင်းလုပ်ငန်းစဉ်သည်များသောအားဖြင့် DNS resolution, သုံးကြိမ်လက်ဆွဲနှုတ်ဆက်ခြင်းနှင့်အခြားစစ်ဆင်ရေးများပါ 0 င်သည်။
$ch = curl_init();
// မြဲမြဲချိတ်ဆက်မှုကိုမသုံးပါနှင့်,သင်တောင်းဆိုသည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်တည်ဆောက်ပါ
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// တောင်းဆိုမှုကို execute
$response = curl_exec($ch);
curl_close($ch);
ဤဥပမာတွင် ဆံပင်ကောက်ကောက်သည် curl_exec () ဟုခေါ်သောအဆက်မပြတ်ဆက်သွယ်မှုအသစ်တစ်ခုကိုဖန်တီးသည်။ DNS resolution နှင့် connection inclease သည် 200ms ခန့်မှန်းခြေအားဖြင့် 200ms ဖြစ်သည်ဟုယူဆပါ။
ဤကိစ္စတွင် Connection pool သည်မြှောက်ထားသည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်တည်ဆောက်ခြင်းကိုရှောင်ရှားရန်တောင်းဆိုခြင်းကိုရှောင်ရှားရန်။ curlopt_forbid_use နှင့် curlopt_keep_sending ကို ချိန်ညှိခြင်းဖြင့်မြှောက်စုံဆက်သွယ်မှုများ၏အကျိုးသက်ရောက်မှုကိုသင်ရရှိနိုင်ပါသည်။ Connection Reuse ကိုသိမ်းဆည်းခြင်းက server တစ်ခုတည်းအတွက်သာမှန်ကန်ကြောင်းသတိပြုသင့်သည်။ ထို့ကြောင့်သင်သည်ကွဲပြားခြားနားသောဒိုမိန်းအမည်များကိုမကြာခဏရယူနိုင်လျှင်အကျိုးသက်ရောက်မှုကိုအလွန်လျော့နည်းသွားလိမ့်မည်။
$ch = curl_init();
// ချိတ်ဆက်ထားရန် setting ကို
curl_setopt($ch, CURLOPT_URL, 'https://m66.net/api/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true); // ဆက်သွယ်မှု၏ပြန်လည်အသုံးပြုခြင်းပိတ်ထား
curl_setopt($ch, CURLOPT_KEEP_SENDING, true); // ချိတ်ဆက်နေပါ
// တောင်းဆိုမှုကို execute
$response = curl_exec($ch);
curl_close($ch);
အဆက်မပြတ်ဆက်သွယ်မှုများအရ, တောင်းဆိုမှုများကိုပေးပို့ရန်လိုအပ်ပါကဆက်သွယ်မှုသည်မမြှောက်ခြင်း, DNS resolution, handshake နှင့်အခြားဖြစ်စဉ်များကိုသိသိသာသာလျှော့ချပေးပြီး,
တောင်းဆိုမှုများအရေအတွက် | curl_upkeep () (MS) ကိုမသုံးပါနှင့် | curl_upkeep () (MS) ကိုသုံးပါ |
---|---|---|
1 | 200ms | 100ms |
10 | 2000ms | 1000ms |
100 | 20000mms | 10000ms |
အထက်ပါစားပွဲ၌တွေ့နိုင်သည်ကို curl_upkeep () ကိုအသုံးပြုပြီးနောက်ဆက်သွယ်မှုမြှောက်ဆက်တင်ခြင်းသည်ဆက်သွယ်မှုကိုဖြတ်ပြီးဆက်သွယ်မှုတစ်ခုစီ၏ဆက်သွယ်မှုကိုသိသိသာသာလျော့နည်းသွားသည်။
curl_upkeep () function သည် TCP ဆက်သွယ်မှုများကိုထိန်းသိမ်းခြင်းနှင့်မြှင့်တင်ခြင်းဖြင့်မကြာခဏဆက်သွယ်မှုတည်ဆောက်ခြင်း၏ overhead ကိုသိသိသာသာလျော့နည်းစေသည်။ အထူးသဖြင့်တောင်းဆိုမှုများကိုတူညီသောဆာဗာသို့ပို့ရန်လိုအပ်သည့်နေရာများတွင်အကျိုးသက်ရောက်မှုသည် ပို. ထင်ရှားသည်။
ထို့ကြောင့်သင်သည် PHP စီမံကိန်းတွင်တူညီသောဆာဗာတစ်ခုနှင့်အတူတူပင်ဆက်သွယ်ပြောဆိုပါက curl_upkeep () ကိုအသုံးပြုရန်နှင့်မလိုအပ်သောဆက်သွယ်မှုတည်ထောင်ခြင်းကိုအသုံးပြုရန်နှင့်မလိုအပ်သောဆက်သွယ်မှုတည်ထောင်ခြင်းကိုရှောင်ရှားရန် Curl_upkeep () ကို အသုံးပြုရန်အကြံပြုသည်။