PHP တွင် HTTP တောင်းဆိုမှုများပြုလုပ်ရန်ဆံပင်ကောက်ကောက်ကိုအသုံးပြုခြင်းသည်အလွန်များသောအားဖြင့်ခွဲစိတ်ကုသမှုဖြစ်သည်။ Curl သည် HTTP တောင်းဆိုမှုများအားလုံး၏ရှုထောင့်အားလုံးကိုစီမံရန်ကြွယ်ဝသောလုပ်ဆောင်နိုင်စွမ်းကိုပေးသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သင်သည် curl_share_init function ကိုသုံးနိုင်သည်။
curl_share_init function သည် PHP တွင် curl extension မှပေးသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်အချို့သောအရင်းအမြစ်များကိုမျှဝေရန်မတူညီသောဆံပင်ကောက်ချက်ချရန် (ကွတ်ကီးများ, http header အချက်အလက်များ, DNS မေးမြန်းချက်များစသည်တို့) ။ အရင်းအမြစ်များကိုမျှဝေခြင်းအားဖြင့်တောင်းဆိုမှုများစွာသည်မိတ္တူပွားခြင်းများကိုရှောင်ရှားနိုင်ပြီးထိရောက်စွာတိုးတက်အောင်လုပ်ခြင်းကိုရှောင်ရှားနိုင်သည်။
curl_share_init နှင့်အတူကျွန်ုပ်တို့သည်မျှဝေထားသော curl အရင်းအမြစ်တစ်ခုကိုဖန်တီးနိုင်ပြီး၎င်းတို့အားလုပ်ငန်းများ၌တူညီသောအရင်းအမြစ်ကိုထိရောက်စွာပြန်လည်သုံးသပ်နိုင်ရန်အတွက်ဤမျှဝေထားသောအရင်းအမြစ်များကိုသိုလှောင်ထားသည့်သိုလှောင်မှုများစွာကိုချည်နှောင်နိုင်သည်။
Grows သည် PHP တွင်အလွန်လူကြိုက်များသော http client တစ်ခုဖြစ်သည်။ Curl နှင့်အခြား HTTP သယ်ယူပို့ဆောင်ရေးနည်းလမ်းများ encapsulates encapsulates encapsuls api တောင်းဆိုမှုများကိုပေးပို့ခြင်းနှင့်တုံ့ပြန်မှုများကိုလက်ခံရရှိရန်ရိုးရှင်းသော API ကိုပေးသည်။ အထွေးခြင်း၏အားသာချက်မှာ၎င်းသည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကိုတောင်းခံခြင်း,
သို့သော် Gozzle ၏ပုံမှန်အကောင်အထည်ဖော်မှုသည်မျှဝေခြင်းကောက်ကောက်ကိုမျှဝေခြင်းကိုတိုက်ရိုက်မထောက်ပံ့ပါ ။
Curl_Share_init ကို ပေါင်းထည့်ရန်ကျွန်ုပ်တို့သည်ဂွေးစ်၏ဆံပင်ကောက်ကောက်ကောက်ကောက်ကိုစိတ်ကြိုက်ပြုလုပ်ရန်လိုအပ်သည်။ Curl_Share_init ကို goir2222xed ကိုဘယ်လိုသုံးရမလဲဆိုတာရဲ့အခြေခံဥပမာတစ်ခုပါ။
<?php
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlHandler;
// တစ် ဦး မျှဝေဖန်တီးပါ cURL လက်ကိုင်
$curlShare = curl_share_init();
// မျှဝေခြင်းရွေးချယ်စရာများကို configure
curl_share_setopt($curlShare, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt($curlShare, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
// a Guzzle ဖောက်သည်
$stack = HandlerStack::create(new CurlHandler());
$stack->push(function($request, $options) use ($curlShare) {
// ရယူ cURL လက်ကိုင်并与共享လက်ကိုင်绑定
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request->getUri());
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SHARE, $curlShare);
// တောင်းဆိုမှုကို execute
$response = curl_exec($ch);
curl_close($ch);
return $response;
}, 'curl_share_handler');
$client = new Client(['handler' => $stack]);
// တောင်းဆိုမှုကိုပို့ပါ
$response = $client->request('GET', 'http://m66.net/someendpoint');
// Print Response
echo $response->getBody();
?>
ဒီဥပမာမှာကျွန်တော်တို့ဟာ shared curlshare $ curlshare $ curlshare ကိုဖန်တီးပြီး curl_share_sethsetop (ဥပမာ cookies and dns) မှတဆင့်မျှဝေရန်အရင်းအမြစ်များကို configure လုပ်ပါ။ ထို့နောက်ကျွန်ုပ်တို့သည်စိတ်ကြိုက် gozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzze ကိုဖန်တီးပြီး Push နည်းလမ်းမှတစ်ဆင့် stack မှ Custom procession logic ကိုထည့်ပါ။ အပြောင်းအလဲနဲ့ယုတ္တိဗေဒတွင်ကျွန်ုပ်တို့သည်ဆံပင်ကောက်ကောက်ကိုရှင်းလင်းစွာဖန်တီးပြီး curl_setop ကို အသုံးပြု. မျှဝေထားသောအရင်းအမြစ်ကိုဖြန့်ဝေသည်။
HTTP တောင်းဆိုမှုများစွာအကြားဆံပင်ကောက်ကောက်ကိုမျှဝေပါကတောင်းဆိုမှုတစ်ခုစီ၏ overhead ကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ အထူးသဖြင့်အကြီးစားတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများတွင် curl_share_init သည် ဆံပင်ကောက်ကောက်များ, DNS, DNS စသဖြင့်အရင်းအမြစ်များကိုထပ်ခါတလဲလဲနစ်မြုပ်စေသည့်အချိန်ကိုလျှော့ချနိုင်သည်။
ဥပမာအားဖြင့်, တောင်းဆိုမှုများစွာနှင့်အတူဇာတ်လမ်းတစ်ပုဒ်တွင် curl_share_init ကိုအသုံးပြုပြီးနောက်တောင်းဆိုမှုတစ်ခုစီသည် DNS အချက်အလက်နှင့် cookies များကိုမျှဝေနိုင်သည်။
curl_share_init function ကို guzle ည့်သည်များသို့မဟုတ်အခြား http client များရှိ curlpp client များနှင့်ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဆံပင်ကောက်ကောက်များကိုမျှဝေနိုင်သည်။ တောင်းခံခြင်း၏ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။ မျှဝေထားသောအရင်းအမြစ်များသည်မိတ္တူပွားများကိုလျှော့ချရုံသာမကတုန့်ပြန်မှုနှုန်းကိုပိုမိုကောင်းမွန်စေရန်, curl_share_init ကို ပေါင်းစည်းခြင်းနည်းလမ်းသည်အတော်လေးရိုးရှင်းပါသည်။ HandlerStack ကို စိတ်ကြိုက်ပြုပြင်ခြင်းနှင့်ဆံပင်ကိုင်းရှ်မျှဝေထားသောလက်ကိုင်ကိုစနစ်တကျပြင်ဆင်ခြင်းဖြင့် http တောင်းဆိုမှုများကိုထိရောက်စွာစီမံနိုင်သည်။