စွမ်းဆောင်ရည်ကောင်းမွန်မှုသည်အကြီးစား API တွားတတ်သောအလုပ်များကိုဖျော်ဖြေသောအခါအရေးပါသည်။ PHP နှင့်ဆံပင်ကောက်ကောက်ကိုအသုံးပြုသော developer များအတွက် curl_share_init () ကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်း () သည်စနစ်အရင်းအမြစ်သုံးစွဲမှုနှင့်ထိရောက်မှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ ဤဆောင်းပါးသည် function, အသုံးပြုမှုအခြေအနေများနှင့်၎င်းကိုကုဒ်တွင်မည်သို့အကောင်အထည်ဖော်နိုင်မည်ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။
curl_share_init () သည် php curl extension ကိုမျှဝေထားသောလက်ကိုင်တစ်ခု (curl share လက်ကိုင်) ကိုစတင်ရန် PHP Curl extension မှထောက်ပံ့ပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ လက်ကိုင်များကိုမျှဝေခြင်းအားဖြင့် dns cache, ssl session cache, ssl session cache, cookies များစသဖြင့်အရင်းအမြစ်များကိုမျှဝေနိုင်သည်။
အတိုချုပ်ဆိုရလျှင်ဤလုပ်ဆောင်ချက်၏အဓိကလုပ်ဆောင်ချက်မှာ "desource for sharing နှင့် dupticate လုပ်ခြင်းကိုလျှော့ချခြင်း" ဖြစ်သည်။
တစ်ချိန်တည်းတွင်ရာနှင့်ချီသော HTTP တောင်းဆိုမှုများကိုသင်တစ်ထောင်လောက်ရှိရန်လိုအပ်သည့်အခါ -
ကြီးမားသောအနားယူ api ဒေတာဘေ့စ်ကိုတွားသွားပါ။
ပုံမှန် third-party data အရင်းအမြစ်များကိုပုံမှန်ထပ်တူပြုခြင်း,
မြင့်မားသောတစ်ပြိုင်နက်တည်းနှင့်အတူ API endpoint ကို access ကိုရယူပါ။
အကယ်. တောင်းဆိုမှုတစ်ခုစီသည် DNS မေးမြန်းမှုနှင့် SSL လက်ဆွဲကိုသီးခြားစီတည်ဆောက်သည်ဆိုလျှင်၎င်းသည်ကြီးမားသောစွမ်းဆောင်ရည်စွန့်ပစ်ပစ္စည်းများကိုဖြစ်စေနိုင်သည်။ curl_share_init () ကိုအသုံးပြုခြင်း () သည်ဤတောင်းဆိုမှုများကိုတစ်စိတ်တစ်ပိုင်း cache ကိုဝေမျှရန်ခွင့်ပြုနိုင်သည်။
Curl_Share_init ကို အသုံးပြု. ကြီးမားသော API တွားတတ်သောအလုပ်များကိုပိုမိုကောင်းမွန်စေရန်အတွက်နမူနာကုဒ်ဖြစ်သည်။
<?php
// အဆိုပါ shared လက်ကိုင်ကိုအစပျိုး
$sh = curl_share_init();
// Shared အရင်းအမြစ်အမျိုးအစားကိုသတ်မှတ်ပါ,ဒီမှာမျှဝေပါ DNS နှင့် Cookie
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
$urls = [
'https://m66.net/api/data1',
'https://m66.net/api/data2',
'https://m66.net/api/data3',
// သင်ပိုမိုထည့်သွင်းရန်ဆက်လက်နိုင်ပါတယ် API စကားပေြာဟော
];
$multiHandle = curl_multi_init();
$curlHandles = [];
// တစ်ခုချင်းစီကိုစတင် cURL easy လက်ကိုင်
foreach ($urls as $i => $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 绑定共享လက်ကိုင်
curl_setopt($ch, CURLOPT_SHARE, $sh);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[$i] = $ch;
}
// တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများဖျော်ဖြေ
$running = null;
do {
curl_multi_exec($multiHandle, $running);
curl_multi_select($multiHandle);
} while ($running > 0);
// ရလဒ်များကိုရယူပါ
foreach ($curlHandles as $i => $ch) {
$response = curl_multi_getcontent($ch);
echo "Response from {$urls[$i]}:\n";
echo $response . "\n";
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// အရင်းအမြစ်များကိုအခမဲ့
curl_share_close($sh);
curl_multi_close($multiHandle);
Shared အရင်းအမြစ်ချိန်ညှိချက်များ <br> <br> curl_share_setopt () တွင်မျှဝေထားသောအရင်းအမြစ်အမျိုးအစားများကိုဖော်ပြရန် အသုံးပြုလေ့ရှိသည်။
curl_lock_data_dns : shared dns cache ကို။
curl_lock_data_cookie : cookies များကိုမျှဝေပါ။
curl_lock_data_ssless_session : SSL session ကိုမျှဝေပါ။
ဖြစ်စဉ်များကိုဖြတ်ပြီးမပါဝင်ပါနဲ့
မျှဝေထားသောလက်ကိုင်သည်တူညီသောလုပ်ငန်းစဉ်နှင့်သာသက်ဆိုင်သည်။ Multi-process crawling သည်အခြားယန္တရားများ (ပြင်ပ cache များသို့မဟုတ်ဒေတာဘေ့စ်ကဲ့သို့) အသုံးပြုခြင်းလိုအပ်သည်။
အရင်းအမြစ်များကိုမှန်ကန်စွာဖြန့်ချိ <br> <br> Crawling Task ပြီးသွားရင် Curl_Share_Close () နှင့် curl_multi_close () curl_multi_close ( )) ကိုမှတ်မိဖို့သတိရပါ
DNS နှင့် SSL Session Sharing ကိုဖွင့်ခြင်းအားဖြင့်သင်ရှောင်ရှားနိုင်သည်။
တူညီသောဒိုမိန်းအမည်ကို (အထူးသဖြင့်ဒိုမိန်းတစ်ခုမှတောင်းဆိုမှုများစွာအတွက်တောင်းဆိုမှုများစွာအတွက်) ကိုပြန်လုပ်ပါ။
SSL လက်ခုပ်တီး (အထူးသဖြင့် HTTPS တောင်းဆိုမှုများ) ကိုပြန်လုပ်ပါ။
အမှန်တကယ်စမ်းသပ်ခြင်းတွင်ရာနှင့်ချီသောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအတွက်ဤ optimization သည် CPU နှင့်ကွန်ယက်ဝန်များကိုသိသိသာသာလျှော့ချပေးနိုင်သည်။