လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> php curl_multi_close စွမ်းဆောင်ရည်ညှိရန်သိကောင်းစရာများ

php curl_multi_close စွမ်းဆောင်ရည်ညှိရန်သိကောင်းစရာများ

gitbox 2025-05-29

Php Concurrencencency Powarios တွင် PHP developer များက curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုလေ့ကျင့်သုံးလေ့ရှိသည်။ ၎င်းတို့အနက် curl_mamulti_close () သည် curl_multi လက်ကိုင်ကိုပိတ်ရန်အသုံးပြုသောအရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော်မလျော်ကန်စွာအသုံးပြုပါက၎င်းသည်အလုံးစုံစွမ်းဆောင်ရည်ကိုနှေးကွေးစေနိုင်သည်။ ဤဆောင်းပါးသည်အတိမ်အနက်ကိုပိုမိုနက်ရှိုင်းစွာလေ့လာသုံးသပ်ရမည်

curl_mamulti_close ၏အခြေခံအခန်းကဏ်ကိုနားလည်ပါ

curl_multi_init ကိုအသုံးပြုပြီး multi-hands multi-accounts ကိုဖန်တီးပြီးနောက်, curl_mamulti_add_add_addle () နှင့်သီးခြား curl အရင်းအမြစ်များကိုပေါင်းထည့်ပြီး curl_mamulti_exec () မှတဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကို execute ။ တောင်းဆိုမှုများအားလုံးကိုပြီးဆုံးသွားသောအခါ curl_multi_close () ကို Multi-Hance အရင်းအမြစ်နှင့်အခမဲ့မှတ်ဉာဏ်ကိုပိတ်ရန်အသုံးပြုသည်။

မျက်နှာပြင်ပေါ်တွင် curl_multi_close () သည်နောက်ဆက်တွဲတစ်ဆင့်သည်အပြီးတွင်စွမ်းဆောင်ရည်နှင့်လုံးဝမသက်ဆိုင်ပါ။ သို့သော်အမှန်မှာ, တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအမြောက်အများပြီးနောက်မှားယွင်းသော shutdown method or timing သည် memory ယိုစိမ့်မှု, သယံဇာတများကိုပိတ်ဆို့ခြင်း, သယံဇာတအရင်းအမြစ်ပိတ်ဆို့ခြင်းကိုဖြစ်ပေါ်စေနိုင်သည်။

ဘုံစွမ်းဆောင်ရည်ပြ issues နာများနှင့်မမှန်ကန်သောအသုံးပြုမှု

  1. Curl_multi_Close () ကိုခေါ်ဆိုခြင်း Curl_multi_close () ကိုအပြည့်အ 0 မပြီးဆုံးမီ,

  2. Class လက်ကိုင်ကိုမှန်ကန်စွာမသန့်ရှင်းပါ။ curl_mamulti_remove_handle () ကို မပိတ်မီ class လက်ကိုင်ကိုမှန်ကန်စွာမဖယ်ရှားပါကစနစ်သည်ပျက်စီးခြင်းကိုလုံးလုံးလျားလျားတိုးပွားစေလိမ့်မည်။

  3. အသုတ်တောင်းဆိုမှုများအရေအတွက်သည်ကြီးမားလွန်းသည်။ ထောင်နှင့်ချီသောအပိုဒ်လက်ကိုင်များကိုတစ်ချိန်တည်းတွင်စီမံပါ။ curl_multi_close () ကိုမှန်ကန်စွာဟုခေါ်သည်။

ပိုကောင်းတဲ့မဟာဗျူဟာ

1 ။ မှန်ကန်သောပိတ်ခြင်းအမိန့်

curl_multi_close () () ကို မခေါ်မီအောက်ပါအစီအစဉ်များတွင်လည်ပတ်သင့်သည်။

 $multiHandle = curl_multi_init();
$chList = [];

for ($i = 0; $i < 100; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/api/endpoint_$i");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($multiHandle, $ch);
    $chList[] = $ch;
}

// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
do {
    $status = curl_multi_exec($multiHandle, $running);
    curl_multi_select($multiHandle);
} while ($running > 0);

// တစ်ခုချင်းစီကိုတစ် ဦး ချင်းစီကိုင်တွယ်ဖယ်ရှားခြင်းနှင့်ပိတ်ပါ
foreach ($chList as $ch) {
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// နောက်ဆုံးအနီးကပ်multiလက်ကိုင်
curl_multi_close($multiHandle);

အဓိကအချက်များအကျဉ်းချုပ် -

  • curl_multi_remove_handle () အပိုဒ်လက်ကိုင်ကိုသန့်ရှင်းရေးလုပ်ပါ

  • curl_close () တစ် ဦး ချင်းစီကိုယ်ပွားကိုင်တွယ်သည်

  • နောက်ဆုံးတော့ curl_multi_close () Multi-handle အရင်းအမြစ်ကိုပိတ်လိုက်တယ်

ဤအပြောင်းအလဲသည်မှတ်ဥာဏ်ယိုစိမ့်မှုနှင့်နှောင့်နှေးမှုများကိုဖြန့်ချိစေနိုင်သည်။

2 ။ တစ်ပြိုင်နက်တည်း၏အရေအတွက်ကိုထိန်းချုပ်ပါ

တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်မပို့ပါနှင့်။ သင်သည်အများဆုံးတစ်ပြိုင်နက်တည်းငွေပမာဏကို သတ်မှတ်. အသုတ်များတွင်ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်တောင်းဆိုမှုများ 20 ကိုတစ်ကြိမ်တွင်သာလုပ်ဆောင်သည်။

 $multiHandle = curl_multi_init();
$chList = [];
$maxConcurrent = 20;

$urls = [];
for ($i = 0; $i < 1000; $i++) {
    $urls[] = "https://gitbox.net/api/endpoint_$i";
}

$index = 0;
do {
    // အများဆုံးတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုထည့်သွင်းခြင်း
    $chList = [];
    for ($i = 0; $i < $maxConcurrent && $index < count($urls); $i++, $index++) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $urls[$index]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_multi_add_handle($multiHandle, $ch);
        $chList[] = $ch;
    }

    do {
        $status = curl_multi_exec($multiHandle, $running);
        curl_multi_select($multiHandle);
    } while ($running > 0);

    // ဖယ်ရှားခြင်းနှင့်ပိတ်ပါ
    foreach ($chList as $ch) {
        curl_multi_remove_handle($multiHandle, $ch);
        curl_close($ch);
    }

} while ($index < count($urls));

curl_multi_close($multiHandle);

အကျိုးသက်ရောက်မှု

  • ထိန်းချုပ်မှုစနစ်ဝန်

  • မှတ်ဥာဏ်ပေါက်ကွဲမှုကိုရှောင်ကြဉ်ပါ

  • curl_multi_close () () သည် အရင်းအမြစ်များကိုလျင်မြန်စွာထုတ်လွှတ်နိုင်သည်ကိုသေချာပါစေ

3 ။ http2 သို့မဟုတ်အချိန်မီ http2 သို့မဟုတ်မြဲ connections enable

ဆာဗာဘေးထွက် ( Gitbox.Net ကဲ့သို့) သည် http / 2 ကိုထောက်ပံ့ပါကတောင်းဆိုမှုများစွာသည်တူညီသောဆက်သွယ်မှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ သင် curlpipe_multiplex ကို ဖွင့်နိုင်သည်။

 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($multiHandle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);

ဤနည်းအားဖြင့် curl_multi_close () သည် ပိုမိုနည်းပါးသောဆက်သွယ်မှုနည်းပါးသောကြောင့်ပိတ်သည့်အခါပိုမိုမြန်ဆန်သည်။

အကျဉ်းချုပ်

curl_multi_close () () သည် curl concurrencencencencencencencency all Process တစ်ခုလုံး၏နောက်ဆုံးခြေလှမ်းသာဖြစ်သော်လည်း၎င်း၏မှန်ကန်သောအသုံးပြုမှုသည် 0 က်ဘ 0 ကိုအ 0 န်းနှင့်ကြိမ်နှုန်းတောင်းဆိုမှုများအတွင်း PHP အစီအစဉ်များ၏တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုက်ရိုက်အကျိုးသက်ရောက်လိမ့်မည်။ အဆုပ်လက်ခုပ်ချလောက်ောင့်အဆုပ်အ 0 င်လက်ကိုင်လက်ကိုင်များကိုထိန်းချုပ်ခြင်းဖြင့်တစ်ပြိုင်နက်တည်းထိန်းချုပ်ခြင်းနှင့်မြဲမြဲချိတ်ဆက်မှုများကိုအသုံးချခြင်းသည်စနစ်၏တုန့်ပြန်မှုမြန်နှုန်းနှင့်အရင်းအမြစ်အသုံးချမှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။

စွမ်းဆောင်ရည်မြင့် PHP applications များကိုဤအသေးစိတ်အကောင်းမြင်များတွင်မကြာခဏဝှက်ထားလေ့ရှိသည်။