ကွန်ယက်တောင်းဆိုမှုများအတွက် PHP အတွက် PHP ကိုအသုံးပြုသောအခါ curl စာကြည့်တိုက်သည်အလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်ပြီးအထူးသဖြင့် HTTP တောင်းဆိုမှုများစွာလိုအပ်သည့်အခြေအနေများနှင့် ပတ်သက်. ကိုင်တွယ်ရာတွင်ဖြစ်သည်။ စွမ်းဆောင်ရည်တိုးတက်စေရန်အတွက်စောင့်ရှောက်မှု - အသက်ရှင်ခြင်းသည်တောင်းဆိုမှုတိုင်းအတွက်ဆက်သွယ်မှုများကိုပြန်လည်တည်ဆောက်ခြင်းကိုရှောင်ရှားနိုင်သည့်အလွန်အရေးကြီးသောနည်းပညာဖြစ်သည်။ ဤဆောင်းပါးတွင်ရှည်လျားသောဆက်သွယ်မှုမြှောက်မြှောက်ခြင်းများရရှိရန် Curl_upkeep () ကို မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
ဆက်သွယ်မှုရှည်လျားသောဆက်သွယ်မှုသည် HTTP ဆက်သွယ်မှုခြုံငုံမှုများအတွက်ယန္တရားတစ်ခုဖြစ်သည်။ ၎င်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းဖြစ်စဉ်များတွင်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းနှင့်စွမ်းဆောင်ရည်တိုးတက်စေရန်အချိန်နှင့်အရင်းအမြစ်များကိုသိသိသာသာလျှော့ချနိုင်သည်။
curl_upkeep () သည် PHP တွင် Custom function တစ်ခုဖြစ်သည်။ ၎င်းသည် PHP တွင် built-in function မဟုတ်ပါ, သို့သော် Consion Multiplexing ၏ function ကိုပေးသော curl စာကြည့်တိုက်၏ encaparulation ပေါ်မူတည်သည်။ ကျိုးကြောင်းဆီလျော်သော configuration မှတဆင့် HTTP တောင်းဆိုမှုတစ်ခုစီသည်ထပ်ခါတလဲလဲ connection increeting ကိုရှောင်ရှားရန် TCP ဆက်သွယ်မှုကိုသုံးနိုင်သည်။
curl_upkeep ကိုအသုံးပြုပြီးရှည်လျားသောဆက်သွယ်မှုမြှောက်စုံပိုးမွှားများမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပိုမိုနားလည်ရန်ပိုမိုကောင်းမွန်သောနားလည်မှုကိုနားလည်ရန်,
ဤနေရာတွင်ရှည်လျားသောဆက်သွယ်မှုမြှောက်မကိန်းများကိုအကောင်အထည်ဖော်သည့် PHP ကုဒ်ဥပမာတစ်ခုမှာ -
function curl_upkeep($url, $headers = array(), $timeout = 30) {
static $ch = null; // static variable ကိုချွေတာခြင်းcURLရုံးထိုင်အချိန်ကာလ
// 如果ရုံးထိုင်အချိန်ကာလ不存在,则初始化一个新的ရုံးထိုင်အချိန်ကာလ
if ($ch === null) {
$ch = curl_init();
// အခြေခံ set upcURLရွေးချယ်စရာများ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// တည်ဆောက်သည်Keep-Aliveဉီးခေါင်း,ဆက်သွယ်မှုကိုတက်ကြွစွာဆက်လက်တည်ရှိပါ
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // အသုံးပြုHTTP/1.1
curl_setopt($ch, CURLOPT_FORBID_REUSE, false); // connection မြှောင်ကိုခွင့်ပြုပါ
curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, 1); // စွမ်းဆောင်နိုင်စေTCP Keep-Alive
}
// တောင်းဆိုမှုကို execute
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
// တောင်းဆိုမှုကိုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($response === false) {
echo "cURL Error: " . curl_error($ch);
}
return $response;
}
// ဥပမာအသုံးပြုမှု
$url = "http://m66.net/api/v1/resource";
$response = curl_upkeep($url);
echo $response;
curl_upkeep () function သည် curl session ကိုကယ်တင်ရန် static variable ကို $ ch ကို အသုံးပြုသည်။ ဤနည်းအားဖြင့်နောက်ဆက်တွဲခေါ်ဆိုမှုများတွင်ဤ session ကိုအချိန်တိုင်းမှရှောင်ရှားရန်ဤ session ကိုပြန်လည်သုံးသပ်နိုင်သည်။
curl_setopt ($ ch, curlopt_http_version, curl_http_ving_1_1) http / 1.1 protocol ကိုအသုံးပြုခြင်းကိုပြဌာန်းပါ။
curl_setopt ($ ch, curlopt_tcp_tcp_ekeepalive, 1) TCP ၏သိမ်းပိုက်ထားသော function ကို Enable လုပ်ရန် TCP ၏ဆက်ရှင်သန်နေသော function ကို enable လုပ်ရန်တောင်းဆိုမှုများအကြားဆက်သွယ်မှုရှိနေဆဲဖြစ်သည်။
Curl_upkeep () ကို အသုံးပြုသောအခါ, ဆက်လက်ရှင်သန်နေသောအပြင်, အောက်ပါဆက်သွယ်မှုပြုပြင်ထိန်းသိမ်းမှုဆိုင်ရာအကြံပေးချက်များသည်ရှည်လျားသောဆက်သွယ်မှုများ၏တည်ငြိမ်မှုနှင့်ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။
network အတက်အကျသို့မဟုတ်ဆာဗာပြ problems နာများကြောင့်ရေရှည်ဆက်သွယ်မှုများအချိန်ထွက်နိုင်သည်။ အချိန်ကိုချိန်ညှိခြင်းအချိန်ကိုချိန်ညှိခြင်းအားဖြင့်ဆက်သွယ်မှုကိုအတင်းအဓမ္မခိုင်းစေခြင်းမှတားဆီးနိုင်သည်။
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // တည်ဆောက်သည်连接超时为30စက်ဏန့်
အထူးကိစ္စရပ်များတွင်ဆက်သွယ်မှုသည်မမျှော်လင့်ဘဲပြတ်တောက်သွားနိုင်သည်။ ဆက်သွယ်မှုကိုပြန်လည်မတည်ဆောက်ရန်တောင်းဆိုမှုတိုင်းကိုပြန်လည်မသတ်မှတ်ခြင်းကိုရှောင်ရှားရန်တောင်းဆိုမှုတစ်ခုချင်းစီသည် session တစ်ခုချင်းစီကိုအကောင်အထည်ဖော်ခြင်းမပြုမီ connection status ကိုစစ်ဆေးနိုင်သည်။
if (!is_resource($ch)) {
$ch = curl_init(); // 重新初始化ရုံးထိုင်အချိန်ကာလ
}
သင့်တွင်မကြာခဏတောင်းဆိုမှုများလိုအပ်သည့် URLs များစွာရှိပါက curl session များစီမံရန်သင်ဆက်သွယ်မှုရေကူးကန်ကိုသုံးနိုင်သည်။ မတူညီသောဆက်သွယ်မှုများနှင့်မပေါင်းခြင်းအားဖြင့်တောင်းဆိုမှုတစ်ခုစီအတွက်ဆက်သွယ်မှုအသစ်များကိုဖန်တီးခြင်းအားထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။
$ch1 = curl_init("http://m66.net/api/v1/resource1");
$ch2 = curl_init("http://m66.net/api/v1/resource2");
// တည်ဆောက်သည်其他ရွေးချယ်စရာများ并တောင်းဆိုမှုကို execute
ဆာဗာပံ့ပိုးမှု - ဆာဗာများအားလုံးကိုထိန်းသိမ်းထားသောဆက်သွယ်မှုများကိုမထောက်ပံ့ပါ။ ဆာဗာဘေးထွက်သည် http / 1.1 ကိုထောက်ပံ့ရန်ပြင်ဆင်ထားရန်သေချာစေရန်လိုအပ်သည်။
ဆက်သွယ်မှုအများဆုံးအရေအတွက် - ရှည်လျားသောဆက်သွယ်မှုများစွာသည်စနစ်အရင်းအမြစ်များစွာကိုသုံးစွဲနိုင်သည်။ ဆာဗာများသို့မဟုတ်ဖောက်သည်များ၏အရင်းအမြစ်များကို 0 န်ဆောင်မှုခံယူရန်အမြင့်ဆုံးဆက်သွယ်မှုအရေအတွက်ကိုအကာအကွယ်ပေးနိုင်သည်။
ချိတ်ဆက်မှုအနီးကပ် - ရှည်လျားသောဆက်သွယ်မှုများသည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။ အချို့တောင်းဆိုမှုများအတွက်အချိန်ကြာမြင့်စွာဆက်သွယ်မှုများသည်အရင်းအမြစ်များကိုဖြုန်းတီးစေနိုင်သည်။ ထို့ကြောင့်ကျိုးကြောင်းဆီလျော်သောဆက်သွယ်မှု၏ဘဝသံသရာကိုစီမံရန်အလွန်အရေးကြီးသည်။