PHP တွင် Multithreaded တောင်းဆိုမှုများကို curl စာကြည့်တိုက်ကို အသုံးပြု. မကြာခဏအကောင်အထည်ဖော်လေ့ရှိသည်။ ဆံပင်ကောက်ကောက် သည် HTTP တောင်းဆိုမှုများကိုကူညီနိုင်သည့်အားနည်းသောစာကြည့်တိုက်ဖြစ်သည်။ Curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်း PHP သည် HTTP တောင်းဆိုမှုများကိုအပြိုင်ဖြင့်ပို့နိုင်သည်။ သို့သော်လူအများစုကတောင်းဆိုမှုပြီးဆုံးပြီးနောက်အရင်းအမြစ်များကိုသန့်ရှင်းရေးကိုလျစ်လျူရှုကြသည်။ multithreaded တောင်းဆိုမှုများကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန် curl_multi_clocess function ကိုမှန်ကန်သောအသုံးပြုမှုသည်အထူးအရေးကြီးသည်။
curl_multi_cloce function ကို curl_multi_init ဖြင့် အစပြု. Multi-handle ကိုပိတ်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်ကိုဖုန်းဆက်ခြင်းသည်အရင်းအမြစ်များကိုထုတ်ယူခြင်း, မှတ်ဉာဏ်ပေါက်ကြားမှုများကိုရှောင်ရှားနိုင်ပြီးမှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ကြဉ်ပါ။
စာတိုတောင်းသောတောင်းဆိုမှုများပြုလုပ်သောအခါတောင်းဆိုချက်တစ်ခုစီသည်အချိန်အနည်းငယ်ကြာနိုင်သည်။ စွမ်းဆောင်ရည်ကိုတိုးမြှင့်ခြင်းနှင့် Memory စားသုံးမှုကိုလျှော့ချရန် curl_mamulti_close သည်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်ဖြစ်သည်။
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);
?>
တောင်းဆိုမှုများကိုစတင်ရန် - ကျွန်ုပ်တို့သည် URLs မျိုးစုံပါ 0 င်သောခင်းကျင်းမှုကိုပထမ ဦး ဆုံးသတ်မှတ်သည်။ ထို့နောက် URL တစ်ခုစီအတွက်ဆံပင်ကောက်ကောက်လက်ကိုင်ကိုစတင်ရန် Curl_init ကို သုံးပါ။
မျိုးစုံဆံပင်ကောက်ကောက်လက်ကိုင်များသို့လက်ကိုင်ပေါင်းထည့်ပါ ။ curl_multi_add_handle function ကိုမှတစ်ဆင့်လက်ကိုင်မျိုးစုံကိုလက်ကိုင်တစ်ခုချင်းစီကိုချိတ်ဆက်ထားသည့်လက်ကိုင်တစ်ခုစီကိုချိတ်ဆက်ထားသည့်လက်ကိုင်တစ်ခုစီကိုချိတ်ဆက်နိုင်သည်။
တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ - curl_multi_exec ကို သုံးပါ။ တောင်းဆိုမှုဖြစ်စဉ်ကာလအတွင်း Curl_multi_Select ကို သုံးပါ။
အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ပါ ။ တောင်းဆိုချက်အားလုံးကိုပြီးစီးပြီးနောက် Curl_multi_getcontent မှတဆင့်တောင်းဆိုမှုတစ်ခုစီအတွက်တုန့်ပြန်မှုအချက်အလက်များကိုကျွန်ုပ်တို့ရရှိသည်။ ထို့နောက်ဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီမှဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီကိုဖယ်ရှားရန် Curl_multi_remove_handle ကို သုံး. လက်ကိုင်တစ်ခုစီကိုပိတ်ရန် Curl_Close ဟုခေါ်ပါ။
မျိုးစုံကိုင်တွယ်နိုင် - နောက်ဆုံးတော့ curl_multi_close ကို သုံးပါ။ ဤအဆင့်သည် Memory ယိုစိမ့်မှုများကိုရှောင်ရှားရန်အရင်းအမြစ်များအားလုံးကိုဖယ်ရှားရန်ဖြစ်သည်။
Parallel တောင်းဆိုမှုအရေအတွက်ကိုကန့်သတ်ထားပါ ။ PHP သည်ဘက်ပေါင်းစုံတောင်းဆိုမှုများကိုပြုလုပ်နိုင်သော်လည်းတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများသည်အလွန်အကျွံဆာဗာဝန်ကိုဖြစ်စေနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောကန့်သတ်ချက်ကန့်သတ်ချက်သည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နှင့်မလိုအပ်သောကွန်ယက်ဝန်ဆောင်မှုများကိုရှောင်ရှားနိုင်သည်။
အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ်လျှောက်လွှာတွင်တောင်းဆိုမှုတစ်ခုစီ၏ပြန်လာသည့်အခြေအနေကိုစစ်ဆေးရန်နှင့်တောင်းဆိုမှုကိုပျက်ကွက်မှုကိုကိုင်တွယ်ရန်သတိရပါ။ ပရိုဂရမ်၏တည်ငြိမ်မှုကိုသေချာစေရန် curl_getinfo မှတဆင့်အသေးစိတ်အမှားအချက်အလက်များကိုသင်ရယူနိုင်သည်။
အရင်းအမြစ်ဖြန့်ချိမှု - Curl_multi_Close နှင့် curl_close နှင့် curl_close နှင့် curl_close သည်အလွန်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။ ဤအဆင့်ကိုသင်မေ့သွားလျှင်၎င်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများစွာပြုလုပ်သောအခါမှတ်ဥာဏ်ယိုစိမ့်မှုများကိုဖြစ်ပေါ်စေနိုင်သည်။
အသုတ်တောင်းဆိုမှုများကိုခွဲထုတ်ခြင်း - တောင်းဆိုမှုများစွာရှိလျှင်တောင်းဆိုမှုကိုအသုတ်လုပ်ခြင်း, ၎င်းသည်အချို့သောအစုအဝေးတစ်ခုအတွက်ကြီးမားသောတောင်းဆိုမှုများကြောင့်ဖြစ်ရတဲ့စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုရှောင်ရှားနိုင်လိမ့်မယ်။
curl_multi_close ကို အသုံးပြုခြင်းအားဖြင့်ချည်ပေါင်းစုံသောတောင်းဆိုမှုများအတွက်အရင်းအမြစ်ဖြန့်ချိမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်အတွက်လျှောက်လွှာ၏စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများနှင့်သယံဇာတသန့်ရှင်းရေးကိုမှန်ကန်စွာစီမံခန့်ခွဲခြင်းသည်မှတ်ဉာဏ်ပေါက်ကြားမှုများကိုလျှော့ချနိုင်ရုံသာမကပရိုဂရမ်တုန့်ပြန်မှုမြန်နှုန်းကိုလည်းလျှော့ချနိုင်သည်။