တစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများစွာပြုလုပ်သောအခါ PHP မှပေးသော functions ၏ curl_multi_ * PHP မှပေးသောလုပ်ဆောင်ချက်များသည် PHP မှပေးသောလုပ်ဆောင်ချက်များကို php လုပ်ခြင်းသည်သင့်အားတစ်ချိန်တည်းတွင်တူညီသောတောင်းဆိုမှုများကိုစတင်ရန်ခွင့်ပြုသည်။ ၎င်းတို့အနက် curl_multi_close () သည်လုပ်ငန်းစဉ်တစ်ခုလုံး၏နောက်ဆုံးအဆင့်ဖြစ်သည်။ curl_multi_init () မှ အစပြုထားသောအရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ရန်တာ 0 န်ရှိသည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအားလုံးကိုပြီးစီးပြီးနောက်ဆံပင်ကောက်ကောက်များအားလုံးကိုမည်သို့နီးကပ်စွာပိတ်ထားရမည်ကိုအသေးစိတ်ရှင်းပြရန်ဤဆောင်းပါးသည်ပြည့်စုံသောဥပမာကိုအသုံးပြုပါမည်။
curl_multi_ ကို အသုံးပြုသည့်အခါတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအတွက်အထွေထွေဖြစ်စဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
curl_multi ကွန်တိန်နာကိုအစပြုပါ။
မျိုးစုံ ဆံပင်ကောက်ကောက် တောင်းဆိုမှုများကိုဖန်တီးပြီး curl_multi ကွန်တိန်နာထဲသို့ထည့်ပါ။
တောင်းဆိုမှုအားလုံး၏ကွပ်မျက်မှုကိုမောင်းထုတ်ရန် curl_multi_exec ကို သုံးပါ။
Loop သည်တောင်းဆိုမှုကိုပြီးစီးခြင်းရှိမရှိစစ်ဆေးသည်။
တစ်ခုချင်းစီကို ဆံပင်ကောက်ကောက် တောင်းဆိုမှု၏ရလဒ်များကိုသီးခြားစီလုပ်ဆောင်ပါ။
တစ်ခုချင်းစီကိုတစ် ဦး ချင်းစီ ကောက်ကောက် လက်ကိုင်ဖယ်ရှား။
curl_multi_close () ကိုအသုံးပြုပါ။
တောင်းဆိုမှုများအားလုံးပြီးဆုံးပြီးနောက် URLs မျိုးစုံကိုတစ်ပြိုင်နက်တည်း URLs များကိုမည်သို့တောင်းခံနိုင်ကြောင်းပြသခြင်းဥပမာတစ်ခုမှာ -
<?php
// တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများပေးပို့ဖို့ URL စာရင်း
$urls = [
"https://gitbox.net/api/data1",
"https://gitbox.net/api/data2",
"https://gitbox.net/api/data3"
];
// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$multiHandle = curl_multi_init();
$curlHandles = [];
// တစ်ခုချင်းစီသည် URL သီးခြားဖန်တီးပါ curl လက်ကိုင်,နှင့်ပူးပေါင်းပါ multi လက်ကိုင်
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10
]);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$active = null;
do {
$mrc = curl_multi_exec($multiHandle, $active);
// curl_multi_select တက်ကြွစွာဆက်သွယ်မှုရှိသည်အထိပိတ်ပင်တားဆီးမှု
if ($active) {
curl_multi_select($multiHandle);
}
} while ($active && $mrc == CURLM_OK);
// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်ကိုရယူပါ
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
$info = curl_getinfo($ch);
$error = curl_error($ch);
echo "URL: " . $info['url'] . PHP_EOL;
echo "HTTP Code: " . $info['http_code'] . PHP_EOL;
echo "Response: " . $response . PHP_EOL;
echo "Error: " . $error . PHP_EOL;
echo str_repeat("-", 40) . PHP_EOL;
// 移除并ရုပ်သိမ်းခြင်းလက်ကိုင်
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// နောက်ဆုံးမှာတော့,ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multiHandle);
?>
လက်ကိုင်အားလုံးကိုဖယ်ရှားပြီးမှသာခေါ်ဆိုပါ ။ curl_multi_close () မှ Contl_multi_Remove_handle () မှ Curl_multi_Remove_handle () မှ Clel_Close () မှ Contl_Close () တစ် ဦး မှ Contl_Close () တစ် ဦး မှ Contl_Close () တစ် ဦး မှ Contl_Close () မှပထမဆုံး clone လက်ကိုင်များအားလုံးကို ဦး စွာဖယ်ရှားပစ်သင့်သည်။ ဒီလိုမှမဟုတ်ရင်အရင်းအမြစ်များကိုထုတ်ပြန်ခြင်းသို့မဟုတ်အမူအကျင့်ကိုမသေချာမရေရာနိုင်ပါ။
Clone လက်ကိုင်ကိုအလိုအလျောက်ပိတ်လိမ့်မည်မဟုတ်ပါ ။ curl_mamulti_close () သည် multi complet သူကိုယ်တိုင်ကိုသာပိတ်ထားမည်မဟုတ်, curl_init မှဖန်တီးထားသောလက်ကိုင်တစ်ခုစီကိုကိုယ်တိုင်လက်ဖြင့်ပိတ်ရန်လိုအပ်သည်။
Call Time : curl_multi_close () သည်လုပ်ငန်းစဉ်တစ်ခုလုံးတွင်သင်နောက်ဆုံးလုပ်ထုံးလုပ်နည်းဖြစ်သင့်သည်။ ၎င်း၏ခေါ်ဆိုမှုသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုသက်တမ်းတစ်လျှောက်လုံး၏တရားဝင်အဆုံးဖြစ်သည်။
curl_multi_init () နှင့် curl_multi_clotose () စနစ်တကျ () စနစ်တကျ () စနစ်တကျသုံးခြင်းဖြင့် PHP တွင်တစ်ပြိုင်နက်တည်းကွန်ယက်တောင်းဆိုမှုများကိုထိရောက်စွာပြုလုပ်နိုင်သည်။ သတိရဖို့သေချာပါစေ: curl_init () တစ် ဦး ချင်းစီ curl_multi_init () တစ် ဦး ချင်းစီ curl_multi_close () တစ် ဦး ချင်းစီကို curl_mamulti_close () နှင့်ကိုက်ညီသည်။