လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_add_handle function ၏အခြေခံအဆောက်အအုံ၏အခြေခံရှင်းပြချက်, မည်သို့လျင်မြန်စွာစတင်ရန်နှင့်၎င်း၏လုပ်ငန်းမူကိုနားလည်နိုင်ပုံ?

curl_multi_add_handle function ၏အခြေခံအဆောက်အအုံ၏အခြေခံရှင်းပြချက်, မည်သို့လျင်မြန်စွာစတင်ရန်နှင့်၎င်း၏လုပ်ငန်းမူကိုနားလည်နိုင်ပုံ?

gitbox 2025-08-28
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဤစာရွက်စာတမ်းသည်သင်ယူခြင်းနှင့်ရည်ညွှန်းရည်ရွယ်ချက်များအတွက်ဖြစ်သည်,မိတ်ဆက်ပေး PHP အလယ်ပိုင်း curl_multi_add_handle လုပ်ဆောင်ချက်များ၏အခြေခံအသုံးပြုမှု。</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
&lt;hr&gt;

</span><span><span class="hljs-comment"># curl_multi_add_handle လုပ်ဆောင်ချက်များ၏အခြေခံအသုံးပြုမှုအသေးစိတ်ရှင်းပြချက်,ဘယ်လိုစတင်ရမလဲနှင့်၎င်းသည်လျင်မြန်စွာအလုပ်လုပ်ပုံကိုနားလည်ရန်?</span></span><span>

အသုံးပြုမှုအတွက် PHP တစ်ပြိုင်နက်တည်း HTTP တောင်းဆိုသည့်အခါ,`curl_multi_add_handle` ၎င်းသည်အလွန်အဓိကလုပ်ဆောင်ချက်ဖြစ်သည်。အဆင်ပြေတယ် `curl_multi_init`、`curl_multi_exec` တန်းတူ function ကို,အပြိုင်တွင်မက်ဆေ့ခ်ျများပေးပို့ရန်ဖြစ်နိုင်သည် cURL မေးမြန်း,从而大大提高网络မေးမြန်း的效率。本文将详细မိတ်ဆက်ပေး `curl_multi_add_handle` အခြေခံအသုံးပြုမှု,၎င်းသည်မည်သို့အလုပ်လုပ်သည်ကိုအလျင်အမြန်နားလည်သဘောပေါက်ခြင်းနှင့်လက်တွေ့ကျင့်သုံးသည်。

</span><span><span class="hljs-comment">## တစ်、ဘာလဲ curl_multi_add_handle?</span></span><span>

`</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>()` ဟုတ်ကဲ့ PHP အလယ်ပိုင်း用于添加单个 cURL မေးမြန်း(အခုချက်ချင်း curl handle)到တစ်个多 cURL ရုံးထိုင်အချိန်ကာလ(multi handle)အလယ်ပိုင်း的函数。它的作用ဟုတ်ကဲ့告诉 `curl_multi_exec`:“我这里有တစ်个新的မေးမြန်း,请တစ်并处理它”。

**function ကိုလက်မှတ်:**

```php
</span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(CurlMultiHandle </span><span><span class="hljs-variable">$multi_handle</span></span><span>, CurlHandle </span><span><span class="hljs-variable">$ch</span></span><span>);
</span></span>
  • $ Multi_handle : curl_mamulti_init မှဖန်တီးထားသောတောင်းဆိုမှုလက်ကိုင်မျိုးစုံတောင်းဆိုမှုလက်ကိုင် ()

  • $ cH : curl_init မှဖန်တီးထားသောတောင်းဆိုမှုလက်ကိုင်တစ်ခုတည်း။

ပြန်လည်တန်ဖိုးသည် boolean တန်ဖိုးဖြစ်ပြီးဖြည့်စွက်မှုအောင်မြင်မှုရှိမရှိညွှန်ပြသည်။

2 ။ curl_multi စီးရီး function ကိုဘာကြောင့်သုံးတာလဲ။

ပုံမှန်ဆံပင်ကောက်ကောက်တောင်းခံမှုတွင်တောင်းဆိုမှုတစ်ခုစီသည်ထပ်တူပြုခြင်းကိုတစ်ပြိုင်တည်းပိတ်ဆို့ထားသည်။ interfaces များသို့မဟုတ်ဝက်ဘ်ဆိုက်အချက်အလက်များကိုတောင်းခံသည့်အခါ၎င်းသည်အလွန်မတတ်နိုင်သောကြောင့်ဖြစ်သည်။ Curl_multi စီးရီးလုပ်ဆောင်ချက်များကိုမိတ်ဆက်ပေးခြင်းသည်ပိတ်ဆို့ခြင်းမဟုတ်သောတစ်ပြိုင်နက်တည်းထုတ်လုပ်မှုဖြေရှင်းနည်းကိုထောက်ပံ့ပေးသည်။

3 ။ အခြေခံဥပမာ - URLs မျိုးစုံ URLs များအတွက်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများ

Curl_multi_add_handle ကို သုံး. အပြည့်အဝဥပမာတစ်ခုမှာအပြိုင်ဝက်ဘ်စာမျက်နှာများကိုမည်သို့တောင်းဆိုရမည်ကိုသရုပ်ပြသည်။

 <span><span><span class="hljs-variable">$urls</span></span><span> = [
    </span><span><span class="hljs-string">"https://www.example.com/"</span></span><span>,
    </span><span><span class="hljs-string">"https://www.php.net/"</span></span><span>,
    </span><span><span class="hljs-string">"https://www.wikipedia.org/"</span></span><span>
];

</span><span><span class="hljs-variable">$multiHandle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-variable">$curlHandles</span></span><span> = [];

</span><span><span class="hljs-comment">// 初始化每个မေးမြန်း并添加到 multi handle အလယ်ပိုင်း</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$urls</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$url</span></span><span>) {
    </span><span><span class="hljs-variable">$ch</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">curl_setopt_array</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, [
        CURLOPT_URL =&gt; </span><span><span class="hljs-variable">$url</span></span><span>,
        CURLOPT_RETURNTRANSFER =&gt; </span><span><span class="hljs-literal">true</span></span><span>,
        CURLOPT_TIMEOUT =&gt; </span><span><span class="hljs-number">10</span></span><span>
    ]);
    </span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$multiHandle</span></span><span>, </span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-variable">$curlHandles</span></span><span>[] = </span><span><span class="hljs-variable">$ch</span></span><span>;
}

</span><span><span class="hljs-comment">// 执行所有မေးမြန်း</span></span><span>
</span><span><span class="hljs-keyword">do</span></span><span> {
    </span><span><span class="hljs-variable">$status</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$multiHandle</span></span><span>, </span><span><span class="hljs-variable">$active</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span>) {
        </span><span><span class="hljs-title function_ invoke__">curl_multi_select</span></span><span>(</span><span><span class="hljs-variable">$multiHandle</span></span><span>); </span><span><span class="hljs-comment">// စောင့် I/O</span></span><span>
    }
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$status</span></span><span> == CURLM_OK);

</span><span><span class="hljs-comment">// ရလဒ်များကိုရယူပါ</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$curlHandles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$ch</span></span><span>) {
    </span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-variable">$info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_getinfo</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"URL: "</span></span><span> . </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'url'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTTP Code: "</span></span><span> . </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-string">'http_code'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Content Length: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$content</span></span><span>) . </span><span><span class="hljs-string">"\n\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$multiHandle</span></span><span>, </span><span><span class="hljs-variable">$ch</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);
}

</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$multiHandle</span></span><span>);
</span></span>

4 ။ အလုပ်လုပ်နိယာမ၏အကျဉ်းချုပ်ဖော်ပြချက်

  1. curl_multi_init ကို သုံး. Multi လက်ကိုင်ကိုဖန်တီးပါ။

  2. URL တစ်ခုချင်းစီအတွက်ပုံမှန်ဆံပင်ကောက်ကောက်ကိုင်ပြီး parameters တွေကိုသတ်မှတ်ပါ။

  3. curl_multi_add_handle () ကိုသုံးရန် multi multi multi multi လုပ်ပါ။

  4. တောင်းဆိုမှုအားလုံးကိုကွပ်မျက်ရန် Curl_Multi_exec () ကို သုံးပါ။

  5. curl_multi_select () တက်ကြွစွာဆက်သွယ်မှုရှိသည့်အထိပိတ်ဆို့ရန် () ကိုအသုံးပြုပါ။

  6. တောင်းဆိုမှုများအားလုံးကိုထုတ်ယူပြီးနောက် curl_multi_remove_handle () ကို ဖယ်ရှားရန်နှင့်ချိတ်ဆက်ရန်နှင့်ပိတ်ရန်ကိုသတိရပါ။

5 ။ ဘုံကြိုတင်ကာကွယ်ရေး

  • လက်ကိုင်တစ်ခုချင်းစီတွင်လိုအပ်သော curlopt_ * multi multi multi multi multi ကိုမထည့်သွင်းမီသတ်မှတ်ထားရမည်။

  • အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ရန်မမေ့ပါနှင့် - curl_multi_remove_handle () နှင့် curl_close ()

  • curl_multi_exec () သည် စစ်ဆင်ရေးအားလုံးပြီးဆုံးသည်အထိခေါ်ဆိုမှုများစွာလိုအပ်နိုင်ပါသည်

  • curl_multi_select () ပျင်းရိ CPU ကိုရှောင်ရှားရန်ကွန်ယက်တုံ့ပြန်မှုကိုစောင့်ဆိုင်းရန်အသုံးပြုသည်။

6 ။ အကျဉ်းချုပ်

curl_multi_add_handle သည်စွမ်းဆောင်ရည်မြင့်ကွန်ယက်တောင်းဆိုမှုများကိုတည်ဆောက်ရန်အခြေခံဖြစ်သည်။ ၎င်း၏အခန်းကဏ် beching ်ဌာန်းခြင်းကိုနားလည်ခြင်းသည် PHP ရှိ Uspronous processing cordass များကိုပိုမိုနက်ရှိုင်းစွာနားလည်ရန်ကူညီလိမ့်မည်။ ၎င်းကိုကျွမ်းကျင်စေခြင်းအားဖြင့်သင်သည်တစ်ပြိုင်နက်တည်းနေထိုင်ခြင်းနှင့် interface စုစုပေါင်းတောင်းဆိုမှုများကဲ့သို့သောအဆင့်မြင့်လုပ်ဆောင်မှုများကိုသင်အကောင်အထည်ဖော်နိုင်သည်။

နမူနာကုဒ်ကိုပိုမိုကျွမ်းကျင်စွာလေ့ကျင့်ခြင်းအားဖြင့်သင်သည်ဤလုပ်ဆောင်မှုကိုပိုမိုကျွမ်းကျင်စွာ အသုံးပြု. ပိုမိုထိရောက်သောနှင့် PPP အစီအစဉ်များကိုပိုမိုကျွမ်းကျင်စွာသုံးနိုင်သည်။

 <span></span>