မြင့်မားသောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုလုပ်ဆောင်သောအခါ, အထူးသဖြင့်တစ်ပြိုင်နက်တည်းကအတန်ငယ်ဒေတာများနှင့်အံရွှေးခေါ်ဆိုမှုများကို PHP ဖြင့်အသုံးပြုသည့်ဖြစ်ရပ်များတွင်ပုံတူပွားခြင်းနှင့်ဆက်သွယ်မှုကိုတည်ဆောက်ခြင်းသည်အရင်းအမြစ်များကိုလျစ်လျူရှုခြင်းမပြုနိုင်ပါ။ curl_share_init function သည် libcurl မှပေးသောအဆင့်မြင့်အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ ၎င်းသည် DNS cache, SSL session များနှင့် cookies များကဲ့သို့သောအရင်းအမြစ်များကိုမျှဝေရန် curl session များစွာကိုခွင့်ပြုထားသည်။
ဤဆောင်းပါးသည် PHP တွင် Curl_share_init ကို PHP တွင်မည်သို့အသုံးပြုရမည်ကိုမည်သို့အသုံးပြုရမည်, ဥပမာအားဖြင့်မည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။
curl_share_init သည် libcurl မှမျှဝေထားသော လက်ကိုင် ကိုအစပျိုးရန် Libcul မှပေးသော function တစ်ခုဖြစ်ပါတယ်။ ဤလက်ကိုင်သည်ဒေတာများစွာကိုသိုလှောင်ထားသည့်တောင်းဆိုမှုများနှင့်အတူဒေတာများကိုမျှဝေနိုင်သည်, ထို့ကြောင့်ထပ်ခါတလဲလဲစတင်ခြင်း,
Multi-threaded သို့မဟုတ် Multi-process တွားသောမျိုးစိတ်များကို သုံး. ဥပမာမြင့်မားသောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုဖြစ်စရာ,
အိမ်ရှင်အလားတူ host ကိုရယူရန်နှင့် DNS cache ကိုမျှဝေရန်လိုသည်။
တူညီသော cookie သို့မဟုတ် ssl session ကိုသုံးပြီးအများအပြားတောင်းဆိုမှုများ။
PHP တွင် curl_share_init () , curl_ssare_setopt () နှင့် curl_setopt () နှင့် curl_setopt () နှင့် curl_setopt () နှင့် curl_setopt () ကိုသုံးနိုင်သည်။ ဤတွင်ပြည့်စုံသောဥပမာတစ်ခုဖြစ်သည်။
<?php
// အဆိုပါ shared လက်ကိုင်ကိုအစပျိုး
$sh = curl_share_init();
// မျှဝေခြင်းရွေးချယ်စရာများကိုသတ်မှတ်ပါ,ဒီမှာမျှဝေပါ Cookie နှင့် DNS
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
// မျိုးစုံဖန်တီးပါ cURL ရုံးထိုင်အချိန်ကာလ
$urls = [
'https://m66.net/api/data1',
'https://m66.net/api/data2',
];
$chs = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// binded shared လက်ကိုင်
curl_setopt($ch, CURLOPT_SHARE, $sh);
$chs[] = $ch;
}
// ဖြစ်ပေါ်လာခြင်း multi handle
$mh = curl_multi_init();
// တောင်းဆိုမှုများအားလုံးကိုထည့်ပါ multi handle
foreach ($chs as $ch) {
curl_multi_add_handle($mh, $ch);
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
// ရလဒ်များကိုရယူပါ
foreach ($chs as $ch) {
$content = curl_multi_getcontent($ch);
echo "တုံ့ပြန်မှုအကြောင်းအရာ:\n" . $content . "\n\n";
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
// သန့်ရှင်းရေးလုပ်သည်
curl_share_close($sh);
curl_multi_close($mh);
?>
Shared Lock type ကန့်သတ်ချက် - သော့ခတ်အမျိုးအစားတစ်ခုသာ ( curl_lock_data_cookie နှင့် curl_lok_data_dns ) ကိုတစ်ကြိမ်တွင်သာသတ်မှတ်နိုင်သည်။ curl_share_setopt အမျိုးအစားမျိုးစုံရေးချိန်တွင်အကြိမ်ပေါင်းများစွာအကြိမ်ကြိမ်ခေါ်သင့်သည်။
Thread ဘေးကင်းလုံခြုံမှုပြ issues နာများ - Curl_share သည် C ဘာသာစကားရှိ Multipreaded CurlizeAs တွင်အသုံးပြုသည်။ PHP ကိုယ်တိုင်က Php ကိုယ်တိုင်က Thp ကိုယ်တိုင်ကမလုံခြုံပါ ။
အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် curl_errno နှင့် curl_error နှင့် curl_error စစ်ဆေးမှုများကိုတောင်းဆိုမှုသည်ပုံမှန်ဖြစ်သည်ကိုသေချာစေရန်သေချာစေရန်လိုအပ်သည်။
curl_share_init သည် Multi- တောင်းဆိုမှုဖြစ်ရာများတွင်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ curl တောင်းဆိုမှုများအကြားအရင်းအမြစ်များကိုမျှဝေခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကွန်ယက်တောင်းဆိုမှုများကို overhead ကိုလျှော့ချရုံသာမကစနစ်၏စွမ်းဆောင်ရည်ကိုလည်းတိုးတက်စေသည်။ PHP တွင် curl_multi နှင့်ပေါင်းစပ်။ စွမ်းဆောင်ရည်မြင့်မားသောတစ်ပြိုင်နက်တည်းစနစ်များအတွက်ခိုင်မာသောအုတ်မြစ်ချနိုင်သည်။
အကယ်. သင်သည်တတိယပါတီ၏ interfaces များနှင့်ချိတ်ဆက်ရန်သို့မဟုတ်ထိရောက်သောတွားနိုင်သောစနစ်ကိုတည်ဆောက်ရန်လိုအပ်ပါက curl_share မှဖြစ်ပေါ်လာသောအကောင်းဆုံးအကျိုးသက်ရောက်မှုကိုသင်လည်းကြိုးစားကြည့်နိုင်သည်။