PHP တွင် curl_multi_ * လုပ်ဆောင်ချက်သည် http တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းပေးပို့ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ အထူးသဖြင့်, curl_multi_info_Read လုပ်ဆောင်ချက်သည် curl တောင်းဆိုမှုများကိုစတင်သောအခါ၎င်းတို့ကိုပြန်လည်စီမံခန့်ခွဲရန်နှင့်လုပ်ဆောင်မှုများကိုကူညီသည်။ ဤဆောင်းပါးသည်ထိရောက်စွာနှင့်တိကျမှန်ကန်မှုကိုသေချာစေရန် curl_multi_info_read ကိုအသုံးပြုသောအခါ curl quesh တောင်းဆိုမှုများကိုမည်သို့ပြန်လည်စီမံခန့်ခွဲရမည်ကိုအသေးစိတ်လေ့လာသုံးသပ်ရမည်။
PHP တွင် curl extension သည် HTTP တောင်းဆိုမှုများအတွက်ကြွယ်ဝသော apis ကိုပေးသည်။ သင်ဟာ http တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်သည့်အခါ curl_mamulti_ * function ကိုများသောအားဖြင့်ဤတောင်းဆိုမှုများကိုအပြိုင်တွင်လုပ်ဆောင်ရန်အသုံးပြုလေ့ရှိသည်။ curl_multi_exec ကို တောင်းဆိုမှုများစွာကို execute လုပ်ရန်အသုံးပြုသည် ။
ပထမ ဦး စွာ curl_multi_init နှင့်အတူ multi-curl လက်ကိုင်တစ်ခုနှင့်ပေါင်းစပ်ပြီး, တောင်းဆိုမှုတစ်ခုစီအတွက်သီးခြားဆံပင်ကောက်ကောက်ကိုဖန်တီးပြီး Multi-curl လက်ကိုင်သို့ထည့်ပါ။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
<?php
// တစ် ဦး ထက်ပိုကန ဦး cURL လက်ကိုင်
$multiCurl = curl_multi_init();
// မျိုးစုံသီးခြားဖန်တီးပါ cURL မေးမြန်းလက်ကိုင်
$curlHandles = [];
$urls = ['https://gitbox.net/api/data1', 'https://gitbox.net/api/data2', 'https://gitbox.net/api/data3'];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiCurl, $ch);
$curlHandles[] = $ch;
}
// တောင်းဆိုမှုကို execute
do {
$status = curl_multi_exec($multiCurl, $active);
if ($active) {
// ဖြစ်ရပ်ပြီးစီးရန်စောင့်ဆိုင်း
curl_multi_select($multiCurl);
}
} while ($active && $status == CURLM_OK);
// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်များကို process
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
// ပြန်လည်ပြုပြင်ခြင်းအချက်အလက်များ
echo $response . PHP_EOL;
// 关闭လက်ကိုင်
curl_multi_remove_handle($multiCurl, $ch);
curl_close($ch);
}
// အများအပြားပိတ်ပါ cURL လက်ကိုင်
curl_multi_close($multiCurl);
?>
အထက်ပါကုဒ်များတွင် curl_multi_add_handle မှတဆင့် Multi Curl လက်ကိုင်လက်ကိုင် လက်ကိုင် ကိုကိုင်တွယ်ရန် curl တောင်းဆိုမှုတစ်ခုစီကိုကျွန်ုပ်တို့ထည့်ပြီး curl_mamulti_exec မှတစ်ဆင့်ဤတောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ပါ။
curl_multi_info_Read function သည် multi-curl လက်ကိုင်မှတောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လာသောသတင်းအချက်အလက်များကိုရရှိရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်မှုမှတစ်ဆင့်တောင်းဆိုမှုဆိုင်ရာအချက်အလက်များနှင့်တောင်းဆိုမှု၏ပြန်လာသည့်အကြောင်းအရာများကိုကျွန်ုပ်တို့ကွပ်မျက်မှုအခြေအနေကိုရယူနိုင်ပါသည်။ တောင်းဆိုမှုများအတွက်ပြန်ပို့ခြင်းနှင့်လုပ်ဆောင်ခြင်းကိုစီမံရန်နှင့်လုပ်ဆောင်ရန်၎င်းကိုမည်သို့အသုံးပြုရမည်နည်း။
<?php
// များစွာသောအစကွပ်မွေးခြင်းနှင့်ကွပ်မျက်ခံရကြောင်းယူဆ cURL မေးမြန်း(အပေါ်ကကြည့်ပါ)
// 获取每个မေးမြန်း的执行信息
while ($done = curl_multi_info_read($multiCurl)) {
// 获取မေးမြန်း状态
$status = $done['result'];
$ch = $done['handle'];
if ($status === CURLE_OK) {
// မေးမြန်း成功
$response = curl_multi_getcontent($ch);
echo "မေးမြန်း成功,ဒေတာကိုပြန်သွားပါ: " . $response . PHP_EOL;
} else {
// မေးမြန်း失败
echo "မေးမြန်း失败,အမှားသတင်းစကား:" . curl_error($ch) . PHP_EOL;
}
// 移除已完成的လက်ကိုင်
curl_multi_remove_handle($multiCurl, $ch);
curl_close($ch);
}
// အများအပြားပိတ်ပါ cURL လက်ကိုင်
curl_multi_close($multiCurl);
?>
ဒီဥပမာမှာတောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လာတဲ့အချက်အလက်တွေရဖို့ curl_multi_info_read ကို သုံးတယ်။ အကယ်. တောင်းဆိုမှုသည်အောင်မြင်ပါကကျွန်ုပ်တို့သည် Returned data ကို curl_mamulti_getcontent မှတဆင့်ရရှိမည်ဖြစ်သည်။ ဒီလိုမှမဟုတ်ရင်အမှားအယွင်းကိုပုံနှိပ်ထုတ်ဝေမယ်။
တောင်းဆိုမှုများစွာကိုအပြိုင်ဖြင့်ကွပ်မျက်ခံရသောအခါတောင်းဆိုမှုတစ်ခုစီ၏ပြန်လာအချက်အလက်များသည်ကွဲပြားသောဖွဲ့စည်းပုံသို့မဟုတ်အကြောင်းအရာရှိနိုင်သည်။ ထို့ကြောင့်, ပြန်လာသောအချက်အလက်များကိုပြုပြင်သောအခါအောက်ပါရှုထောင့်များကိုကျွန်ုပ်တို့သုံးသပ်ရန်လိုအပ်သည်။
ဒေတာပုံစံများစည်းလုံးညီညွတ်ရေး - တောင်းဆိုမှုများအားလုံးမှပြန်လာသောအချက်အလက်များသည်တသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန်, နောက်ပိုင်းတွင်လုပ်ငန်းစဉ်ကိုပိုမိုလွယ်ကူစေသည်။ ဥပမာအားဖြင့်, သင်သည်ပြန်လာသောအချက်အလက်များကို JSON format ဖြင့်ပြောင်းလဲရန်စဉ်းစားနိုင်သည်။
အမှားကိုင်တွယ်ခြင်း - တောင်းဆိုမှုတစ်ခုစီအတွက်တောင်းဆိုမှုကိုပျက်ကွက်မှုကိုကိုင်တွယ်ရမည်။ curl_multi_info_read သည် Debug ကိုရှာဖွေရန်နှင့်ခွဲခြမ်းစိတ်ဖြာရန်တောင်းဆိုထားသောအမှားအချက်အလက်များကိုရယူနိုင်သည်။
ပြတ်တောင်းပြတ်တောင်းဒေတာလုပ်ဆောင်မှု - အချို့ဖြစ်ရပ်များတွင်ပြန်လည်နေရာချထားသည့်အချက်အလက်များကိုဒေတာဘေ့စ်ထဲထည့်ခြင်းသို့မဟုတ်အခြား API ခေါ်ဆိုမှုများပြုလုပ်ရန်လိုသည်။ ဤကိစ္စတွင်, Queue စနစ်ကိုအသုံးပြုနိုင်သည်သို့မဟုတ်ဒေတာများကို cache တွင်သိမ်းဆည်းထားပြီးနောက်မှလုပ်ဆောင်နိုင်သည်။
အောက်ဖော်ပြပါအချက်သည်အချက်အလက်အမျိုးအစားအပြောင်းအလဲနှင့်အမှားအယွင်းများကိုပေါင်းစပ်ခြင်းနှင့်အမှားအယွင်းများရေးဆွဲခြင်း။
<?php
// မျိုးစုံအကောင်အထည်များဖျော်ဖြေခဲ့ကြသည်ယူဆ cURL မေးမြန်း并获取了ဒေတာကိုပြန်သွားပါ
while ($done = curl_multi_info_read($multiCurl)) {
$ch = $done['handle'];
$status = $done['result'];
// 检查မေးမြန်း是否成功
if ($status === CURLE_OK) {
$response = curl_multi_getcontent($ch);
// ပြန်လာကြောင်းယူဆ JSON အချက်များ
$data = json_decode($response, true);
if ($data === null) {
echo "သုံးသပ်ကြည့်ရှုခြင်း JSON အချက်များ失败:" . json_last_error_msg() . PHP_EOL;
} else {
// 处理အချက်များ
echo "成功获取အချက်များ:" . print_r($data, true) . PHP_EOL;
}
} else {
// မေးမြန်း失败,输出အမှားသတင်းစကား
echo "မေးမြန်း失败,အမှားသတင်းစကား:" . curl_error($ch) . PHP_EOL;
}
// 移除并关闭လက်ကိုင်
curl_multi_remove_handle($multiCurl, $ch);
curl_close($ch);
}
curl_multi_close($multiCurl);
?>
ဤကုဒ်တွင်ကျွန်ုပ်တို့သည် JSONS_Decode မှတဆင့်ပြန်လာသော JSON အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာအမှားကိုကိုင်တွယ်သည်။
curl_multi_ * function သည်အပြိုင်တောင်းဆိုမှုများကိုအပြိုင်တောင်းဆိုမှုများကိုအပြိုင်တောင်းဆိုမှုများကိုခွင့်ပြုသော်လည်း,
အသုတ်တောင်းဆိုမှုများ - တောင်းဆိုမှုများအားလုံးကိုတစ်ပြိုင်နက်တည်းပေးပို့မည့်အစားတောင်းဆိုမှုများအားလုံးကိုတစ်ပြိုင်နက်တည်းပို့မည့်အစားတောင်းဆိုမှုများကိုပေးပို့ပါ။
အချိန်ကုန်ခံချိန်ညှိခြင်း - အခြားတောင်းဆိုမှုများကိုပိတ်ဆို့ခြင်းနှင့်ထိခိုက်နစ်နာမှုကိုထိခိုက်စေခြင်းမှတားဆီးရန်သင့်တော်သောအချိန်ကန့်သတ်ချက်များကိုသတ်မှတ်ပါ။ တောင်းဆိုမှုအချိန်ကိုသတ်မှတ်ရန် curlopt_timeout သို့မဟုတ် curlopt_timeout_ms ကို သုံးပါ။
connection pooling : currl ၏ဆက်သွယ်မှုမြှောက်သတ်ယန္တရားကိုအသုံးပြုခြင်း, ကထပ်ခါတလဲလဲခိုင်လုံသောဆက်သွယ်မှုများ၏ overhead ကိုလျော့နည်းစေသည်။ curlopt_forbid_use and curlopt_fresh_connect ကို setting ဖြင့် connection မြှောက်မကိန်းကိုပိုကောင်းအောင်လုပ်နိုင်ပါတယ်။
curl_multi_info_Read နှင့် curl_multi_ * လုပ်ဆောင်ချက်များနှင့်အတူ PHP သည် HTTP တောင်းဆိုမှုများကိုအလွန်ထိထိရောက်ရောက်အသုံးချနိုင်သည်။ လက်တွေ့ကျသောအပလီကေးရှင်းများအနေဖြင့်ကျွန်ုပ်တို့သည်တောင်းဆိုမှုများကိုအပြိုင်အရေးယူခြင်းကိုအာရုံစိုက်သင့်သည်။
ဤဆောင်းပါးသည် PHP တွင် Curlulti_info_Read ကို မည်သို့အသုံးပြုရမည်ကိုပိုမိုနားလည်ရန်မျှော်လင့်ပါသည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
cURL