လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_getinfo နှင့်အသုံးပြုသောအခါ curl_multi_close ဒေတာပြ problem နာ

curl_getinfo နှင့်အသုံးပြုသောအခါ curl_multi_close ဒေတာပြ problem နာ

gitbox 2025-05-12

PHP တွင် curl_multi_ * လုပ်ဆောင်ချက်များသည် curlti_ * လုပ်ဆောင်ချက်များသည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကိုပြုလုပ်နိုင်သည်။ ဤရှုထောင့်ကတောင်းဆိုမှုများတွင် curl_getinfo သည် HTTP အခြေအနေကုဒ်, တောင်းဆိုထားသော URL, ထုတ်လွှင့်သော URL, ထုတ်လွှင့်သော itc ကိုအသုံးပြုပြီးအချက်အလက်များအားပြန်လည်ထူထောင်ခြင်း,

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

1 ။ curl_multi_ * လုပ်ဆောင်ချက်များကိုနားလည်သဘောပေါက်ခြင်းနှင့် curl_getinfo ၏အခြေခံကိုနားလည်ပါ

PHP တွင် curl_multi_ * function သည် curl_multi_ * function ကတစ်ပြိုင်နက်တည်း curl တောင်းဆိုမှုများကိုစတင်ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့် curl_multi_init ကို curl_multi_init ကိုသုံးပါ, curl_multi_add_handle ကိုသုံးပါ နောက်ဆုံးတွင် curl_multi_close သုံး. session ကိုပိတ်ပါ။

ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 $mh = curl_multi_init();  // ဖြစ်ပေါ်လာခြင်း multi curl လက်ကိုင်
$ch1 = curl_init("http://gitbox.net/api/data1");  // မေးမြန်း 1
$ch2 = curl_init("http://gitbox.net/api/data2");  // မေးမြန်း 2

curl_multi_add_handle($mh, $ch1);  // 添加မေးမြန်း 1
curl_multi_add_handle($mh, $ch2);  // 添加မေးမြန်း 2

do {
    $mrc = curl_multi_exec($mh, $active);
} while ($active && $mrc == CURLM_OK);

curl_multi_remove_handle($mh, $ch1);  // 移除မေးမြန်း 1
curl_multi_remove_handle($mh, $ch2);  // 移除မေးမြန်း 2

curl_multi_close($mh);  // ရုပ်သိမ်းခြင်း multi curl လက်ကိုင်

2 ။ ဒေတာထပ်တူပြုခြင်းပြ problems နာများ၏အရင်းအမြစ်အကြောင်းရင်း

တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းကွပ်မျက်ခံရသောအခါတောင်းဆိုမှုများအားလုံးပြီးဆုံးပြီးနောက်ကျွန်ုပ်တို့သည်များသောအားဖြင့်သူတို့၏အသေးစိတ်အချက်အလက်များကိုရလိုကြသည်။ curl_getinfo function ကို Returned status code code (curlinfo_http_code) နှင့်အခြား metadata ကဲ့သို့သော curlinfo_htt_code) နှင့်အခြား metadata ကဲ့သို့သော curlinfo_http_code ) နှင့်အခြား metadata ကဲ့သို့သော curlinfo_http_code) နှင့်အခြား metadata ကဲ့သို့သော curlinfo_http_code ဖြစ်သည်။ သို့သော်တောင်းဆိုမှုများစွာကိုအကန့်အသတ်ဖြင့်ပြုလုပ်ရန်တောင်းဆိုမှုများကိုအပြိုင်ပြုလုပ်ရန်နှင့်အပြိုင်ပြုလုပ်သောကြောင့် Curl_getIFO ကို တောင်းဆိုမှုအပြည့်အဝမလုပ်ဆောင်မီအချက်အလက်များပြန်လည်ထုတ်ယူခြင်းမပြုရန်သေချာစေရန်သင့်တော်သောအချိန်တွင်သင့်တော်သောအချိန်၌တောင်းဆိုရန်လိုအပ်သည်။

အကယ်. သင်တောင်းဆိုမှုမပြည့်မီ curl_getinfo ဟုသင်ခေါ်ဆိုပါကသင်မှားယွင်းသောသို့မဟုတ်မပြည့်စုံသောအချက်အလက်များရနိုင်သည်။ ထို့ကြောင့်ထပ်တူပြုခြင်း၏ကျိုးကြောင်းဆီလျော်သောအချိန်ကိုက်ခြင်းသည်အလွန်အရေးကြီးသည်။

3 ။ မှန်ကန်သောအသုံးပြုမှုအမိန့်နှင့်ထပ်တူပြုခြင်းမူဝါဒ

3.1 curl_mamulti_select မှတဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုလက်ကိုင်ကိုင်တွယ်ပါ

curl_multi_exec ဟုခေါ်သောအခါတောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ရန် PHP သည် loop တစ်ခုသို့ 0 င်ရောက်လိမ့်မည်။ ဤဖြစ်စဉ်တွင် curl_mamulti_select သည် ကျွန်ုပ်တို့အားရပ်တည်ရန်ကျွန်ုပ်တို့အားကိုင်တွယ်ဖြေရှင်းရန်ကျွန်ုပ်တို့အားကိုင်တွယ်ဖြေရှင်းရန်ကူညီပေးနိုင်သည်။

 do {
    // 等待မေးမြန်း完成
    $mrc = curl_multi_exec($mh, $active);

    // ဒေတာအဆင်သင့်သည်အထိစောင့်ပါ
    if ($active) {
        curl_multi_select($mh);
    }
} while ($active && $mrc == CURLM_OK);

3.2 လက်ကိုင်ကိုဖယ်ရှားပြီးနောက်ဒေတာကိုသေချာအောင်လုပ်ပါ

တောင်းဆိုမှုများအားလုံးကိုပြီးဆုံးသွားပြီးလက်ကိုင်အားလုံးကိုဖယ်ရှားပြီးသည်နှင့်တပြိုင်နက်တောင်းဆိုချက်အချက်အလက်များကိုရယူရန်အချိန်ကောင်းဖြစ်သည်။ ဒီလိုမှမဟုတ်ရင်သင်ဟာလက်ကိုင်ကိုကြိုတင်ပြင်ဆင်ထားမယ်ဆိုရင်သင်တောင်းဆိုချက်တွေရဲ့ရလဒ်ကိုသင်လွဲချော်နိုင်တယ်။

 // 获取မေးမြန်း信息
$info1 = curl_getinfo($ch1);
$info2 = curl_getinfo($ch2);

// ထုတ်ပေးသတင်းအချက်အလက်
echo "Request 1 HTTP Code: " . $info1['http_code'] . "\n";
echo "Request 2 HTTP Code: " . $info2['http_code'] . "\n";

3.3 လက်ကိုင်ကိုဖယ်ရှားရန် curl_multi_remove_handle ကို သုံးပါ

ဒေတာကိုရယူပြီးနောက်တွင် curl_multi session တစ်ခုမှလက်ကိုင်တစ်ခုစီကိုဖယ်ရှားပြီးအဆုံးမှာပိတ်ထားပါ။ ၎င်းသည်တံခါးပိတ်တောင်းဆိုချက်၏ရလဒ်များကိုရရန်ကြိုးပမ်းမှုမရှိတော့ပါ။

 curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);

4 ။ Code ဥပမာ - ပြည့်စုံသောလျှောက်လွှာ

အထက်ဖော်ပြပါပေါင်းစပ်မှုနှင့်အတူပေါင်းစပ်ပြီးဤတွင်ပိုမိုပြည့်စုံသောဥပမာတစ်ခုမှာတောင်းဆိုမှုတစ်ခုစီ၏အသေးစိတ်အချက်အလက်များကိုမှန်ကန်စွာမည်သို့ရယူရမည်နှင့်ဒေတာထပ်တူပြုခြင်းကိစ္စများမရှိပါ။

 $mh = curl_multi_init();  // ဖြစ်ပေါ်လာခြင်း multi curl လက်ကိုင်
$ch1 = curl_init("http://gitbox.net/api/data1");  // မေးမြန်း 1
$ch2 = curl_init("http://gitbox.net/api/data2");  // မေးမြန်း 2

curl_multi_add_handle($mh, $ch1);  // 添加မေးမြန်း 1
curl_multi_add_handle($mh, $ch2);  // 添加မေးမြန်း 2

// 执行မေးမြန်း并等待完成
do {
    $mrc = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh);  // ဒေတာအဆင်သင့်ဖြစ်ရန်စောင့်ပါ
    }
} while ($active && $mrc == CURLM_OK);

// 获取မေးမြန်း的执行信息
$info1 = curl_getinfo($ch1);
$info2 = curl_getinfo($ch2);

// 输出မေးမြန်း信息
echo "Request 1 HTTP Code: " . $info1['http_code'] . "\n";
echo "Request 2 HTTP Code: " . $info2['http_code'] . "\n";

// 移除လက်ကိုင်
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);

// ရုပ်သိမ်းခြင်း multi curl လက်ကိုင်
curl_multi_close($mh);

နိဂုံးချုပ်အားဖြင့်

curl_multi_exec နှင့် curl_multi_selecte ကို မှန်ကန်စွာ အသုံးပြု. သတင်းအချက်အလက်များကို curl_getinfo မှတစ်ဆင့်ရရှိသောအချက်အလက်များကို curl_getinfo မှတစ်ဆင့်ရရှိသောအချက်အလက်များကိုရရှိသောအချက်အလက်များကိုရရှိသောကြောင့်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကြောင့်ဖြစ်ရတဲ့ data ထပ်တူပြုခြင်းပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုပြုပြင်ခြင်းအတွက်အချိန်ကိုက်သည်အလွန်အရေးကြီးသည်။ ကျိုးကြောင်းဆီလျော်စွာခေါ်ဆိုမှုအမိန့်နှင့်ထပ်တူပြုခြင်းမဟာဗျူဟာသည်မှန်ကန်သောအချက်အလက်များကိုရရှိသောနည်းလမ်းများကိုသေချာစေနိုင်သည်။