လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_close multithreaded တောင်းဆိုမှုများနှင့်အတူအကောင်းဆုံးအလေ့အကျင့်များ

curl_multi_close multithreaded တောင်းဆိုမှုများနှင့်အတူအကောင်းဆုံးအလေ့အကျင့်များ

gitbox 2025-05-12

PHP တွင် Multithreaded တောင်းဆိုမှုများကို curl စာကြည့်တိုက်ကို အသုံးပြု. မကြာခဏအကောင်အထည်ဖော်လေ့ရှိသည်။ ဆံပင်ကောက်ကောက် သည် HTTP တောင်းဆိုမှုများကိုကူညီနိုင်သည့်အားနည်းသောစာကြည့်တိုက်ဖြစ်သည်။ Curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်း PHP သည် HTTP တောင်းဆိုမှုများကိုအပြိုင်ဖြင့်ပို့နိုင်သည်။ သို့သော်လူအများစုကတောင်းဆိုမှုပြီးဆုံးပြီးနောက်အရင်းအမြစ်များကိုသန့်ရှင်းရေးကိုလျစ်လျူရှုကြသည်။ multithreaded တောင်းဆိုမှုများကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန် curl_multi_clocess function ကိုမှန်ကန်သောအသုံးပြုမှုသည်အထူးအရေးကြီးသည်။

curl_multi_close ဆိုတာဘာလဲ။

curl_multi_cloce function ကို curl_multi_init ဖြင့် အစပြု. Multi-handle ကိုပိတ်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်ကိုဖုန်းဆက်ခြင်းသည်အရင်းအမြစ်များကိုထုတ်ယူခြင်း, မှတ်ဉာဏ်ပေါက်ကြားမှုများကိုရှောင်ရှားနိုင်ပြီးမှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ကြဉ်ပါ။

စာတိုတောင်းသောတောင်းဆိုမှုများပြုလုပ်သောအခါတောင်းဆိုချက်တစ်ခုစီသည်အချိန်အနည်းငယ်ကြာနိုင်သည်။ စွမ်းဆောင်ရည်ကိုတိုးမြှင့်ခြင်းနှင့် Memory စားသုံးမှုကိုလျှော့ချရန် curl_mamulti_close သည်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်ဖြစ်သည်။

curl_mamulti_close သုံး. multimeaded တောင်းဆိုမှုစွမ်းဆောင်ရည်ကိုအကောင်းဆုံးနည်း။

Curl_multi_close သုံး. multimeaded တောင်းဆိုမှုစွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်အခြေခံဥပမာတစ်ခုဖြစ်သည်။

 <?php

// တောင်းဆိုမှုများမျိုးစုံဖန်တီးပါ URL အခင်းအကျင်း
$urls = [
    "http://gitbox.net/api/data1",
    "http://gitbox.net/api/data2",
    "http://gitbox.net/api/data3"
];

// မျိုးစုံကိုအစပြု cURL လက်ကိုင်
$multiHandle = curl_multi_init();
$curlHandles = [];

// ကွင်းဆက်တစ်ခုချင်းစီကိုတောင်းဆိုမှုကိုစတင်
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  // တစ် ဦး string ကိုမှပြန်လာအကြောင်းအရာကိုသတ်မှတ်ပါ
    curl_multi_add_handle($multiHandle, $ch);       // 添加到多线程လက်ကိုင်中
    $curlHandles[] = $ch;  // တစ်ခုချင်းစီကိုသိမ်းပါ cURL လက်ကိုင်
}

// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
do {
    $status = curl_multi_exec($multiHandle, $active);
    if ($active) {
        // ဖြည့်စွက်ရန်တောင်းဆိုမှုများအားလုံးကိုစောင့်ပါ
        curl_multi_select($multiHandle);
    }
} while ($active);

// အားလုံးတောင်းဆိုမှုများ၏ရလဒ်များကိုရယူပါနှင့်အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ပါ
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    echo $response . "\n";  // output တောင်းဆိုမှုရလဒ်

    // ရေွှ့ cURL လက်ကိုင်
    curl_multi_remove_handle($multiHandle, $ch);

    // ရုပ်သိမ်းခြင်း cURL လက်ကိုင်
    curl_close($ch);
}

// ရုပ်သိမ်းခြင်း多重 cURL လက်ကိုင်
curl_multi_close($multiHandle);
?>

ကုဒ်ကိုရှင်းပြပါ

  1. တောင်းဆိုမှုများကိုစတင်ရန် - ကျွန်ုပ်တို့သည် URLs မျိုးစုံပါ 0 င်သောခင်းကျင်းမှုကိုပထမ ဦး ဆုံးသတ်မှတ်သည်။ ထို့နောက် URL တစ်ခုစီအတွက်ဆံပင်ကောက်ကောက်လက်ကိုင်ကိုစတင်ရန် Curl_init ကို သုံးပါ။

  2. မျိုးစုံဆံပင်ကောက်ကောက်လက်ကိုင်များသို့လက်ကိုင်ပေါင်းထည့်ပါcurl_multi_add_handle function ကိုမှတစ်ဆင့်လက်ကိုင်မျိုးစုံကိုလက်ကိုင်တစ်ခုချင်းစီကိုချိတ်ဆက်ထားသည့်လက်ကိုင်တစ်ခုစီကိုချိတ်ဆက်ထားသည့်လက်ကိုင်တစ်ခုစီကိုချိတ်ဆက်နိုင်သည်။

  3. တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ - curl_multi_exec ကို သုံးပါ။ တောင်းဆိုမှုဖြစ်စဉ်ကာလအတွင်း Curl_multi_Select ကို သုံးပါ။

  4. အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ပါ ။ တောင်းဆိုချက်အားလုံးကိုပြီးစီးပြီးနောက် Curl_multi_getcontent မှတဆင့်တောင်းဆိုမှုတစ်ခုစီအတွက်တုန့်ပြန်မှုအချက်အလက်များကိုကျွန်ုပ်တို့ရရှိသည်။ ထို့နောက်ဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီမှဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီကိုဖယ်ရှားရန် Curl_multi_remove_handle ကို သုံး. လက်ကိုင်တစ်ခုစီကိုပိတ်ရန် Curl_Close ဟုခေါ်ပါ။

  5. မျိုးစုံကိုင်တွယ်နိုင် - နောက်ဆုံးတော့ curl_multi_close ကို သုံးပါ။ ဤအဆင့်သည် Memory ယိုစိမ့်မှုများကိုရှောင်ရှားရန်အရင်းအမြစ်များအားလုံးကိုဖယ်ရှားရန်ဖြစ်သည်။

အကောင်းဆုံးအလေ့အကျင့်: အပြိုင်တောင်းဆိုမှုများကို optimize လုပ်ပါ

  1. Parallel တောင်းဆိုမှုအရေအတွက်ကိုကန့်သတ်ထားပါ ။ PHP သည်ဘက်ပေါင်းစုံတောင်းဆိုမှုများကိုပြုလုပ်နိုင်သော်လည်းတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများသည်အလွန်အကျွံဆာဗာဝန်ကိုဖြစ်စေနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောကန့်သတ်ချက်ကန့်သတ်ချက်သည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နှင့်မလိုအပ်သောကွန်ယက်ဝန်ဆောင်မှုများကိုရှောင်ရှားနိုင်သည်။

  2. အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ်လျှောက်လွှာတွင်တောင်းဆိုမှုတစ်ခုစီ၏ပြန်လာသည့်အခြေအနေကိုစစ်ဆေးရန်နှင့်တောင်းဆိုမှုကိုပျက်ကွက်မှုကိုကိုင်တွယ်ရန်သတိရပါ။ ပရိုဂရမ်၏တည်ငြိမ်မှုကိုသေချာစေရန် curl_getinfo မှတဆင့်အသေးစိတ်အမှားအချက်အလက်များကိုသင်ရယူနိုင်သည်။

  3. အရင်းအမြစ်ဖြန့်ချိမှု - Curl_multi_Close နှင့် curl_close နှင့် curl_close နှင့် curl_close သည်အလွန်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။ ဤအဆင့်ကိုသင်မေ့သွားလျှင်၎င်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများစွာပြုလုပ်သောအခါမှတ်ဥာဏ်ယိုစိမ့်မှုများကိုဖြစ်ပေါ်စေနိုင်သည်။

  4. အသုတ်တောင်းဆိုမှုများကိုခွဲထုတ်ခြင်း - တောင်းဆိုမှုများစွာရှိလျှင်တောင်းဆိုမှုကိုအသုတ်လုပ်ခြင်း, ၎င်းသည်အချို့သောအစုအဝေးတစ်ခုအတွက်ကြီးမားသောတောင်းဆိုမှုများကြောင့်ဖြစ်ရတဲ့စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုရှောင်ရှားနိုင်လိမ့်မယ်။

အကျဉ်းချုပ်

curl_multi_close ကို အသုံးပြုခြင်းအားဖြင့်ချည်ပေါင်းစုံသောတောင်းဆိုမှုများအတွက်အရင်းအမြစ်ဖြန့်ချိမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်အတွက်လျှောက်လွှာ၏စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများနှင့်သယံဇာတသန့်ရှင်းရေးကိုမှန်ကန်စွာစီမံခန့်ခွဲခြင်းသည်မှတ်ဉာဏ်ပေါက်ကြားမှုများကိုလျှော့ချနိုင်ရုံသာမကပရိုဂရမ်တုန့်ပြန်မှုမြန်နှုန်းကိုလည်းလျှော့ချနိုင်သည်။