PHP's Curl Multi-Request Multi-Multi-Request Multose ကိုအသုံးပြုသောအခါ curl_mamulti_close သည်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် curl_multi_close ပြီးနောက်သင် curl လက်ကိုင်တစ်ခုတည်းကိုဆက်လက်ရယူလိုပါကပရိုဂရမ်သည်ကြိုတင်ခန့်မှန်းရခက်သည့်အပြုအမူကိုတွေ့ကြုံခံစားနိုင်ပြီးကြီးမားသောအမှားများကိုဖြစ်ပေါ်စေသည်။ ၎င်းကိုရှောင်ရှားရန်မှန်ကန်သောအရင်းအမြစ်စီမံခန့်ခွဲမှုနည်းလမ်းကိုနားလည်ရန်လိုအပ်သည်။
Curl_Multi_Close ($ MH) ဟုခေါ်သည့်အခါ $ MH နှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုပိတ်ထားလိမ့်မည်။ တစ်ခုတည်းဆံပင်ကောက်ကောက်လက်ကိုင် (i.e. ကို curl_init မှတဆင့်ဖန်တီး) ပေမယ့်ချက်ချင်းဖျက်ဆီးခြင်းမဟုတ်ပေမယ့်သူတို့ multi-connection အစိတ်အပိုင်းများမမှန်ကန်ပါလိမ့်မယ်။ နောက်မှဤလက်ကိုင်များကိုဆက်လက်အသုံးပြုနေပါက curl_exec နှင့် curl_getinfo ကဲ့သို့သောစစ်ဆင်ရေးများသည်အမှားအယွင်းများဖြစ်ပေါ်စေပြီးယုတ္တိရှိသည့်ခြွင်းချက်များသို့မဟုတ်အစီအစဉ်ပျက်ပြားသွားစေနိုင်သည်။
မမှန်ကန်သောလက်လှမ်းမီမှုပြ the နာကိုရှောင်ရှားရန်အောက်ပါအမိန့်ကိုကိုင်တွယ်သင့်သည် -
အားလုံးတောင်းဆိုမှုရလဒ်များကို execute နှင့်ရယူပါ
တစ် ဦး ချင်းစီ curl လက်ကိုင်တစ်ခုချင်းစီကိုဖယ်ရှားပါ ( curl_maulti_remove_handle )
တစ် ဦး ချင်းစီ၏ဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုချင်းစီကိုပိတ်ပါ ( curl_close )
နောက်ဆုံးအနေဖြင့် Multi Match Multi လက်ကိုင် ( curl_multi_close ) ကိုပိတ်ပါ။
၎င်းသည်မည်သည့်ဝှက်ထားသောအန္တရာယ်များမရှိဘဲအရင်းအမြစ်တိုင်းကိုစနစ်တကျဖြန့်ချိကြောင်းသေချာသည်။
ဤတွင်မှန်မှန်ကန်ကန်လက်ကိုင်ကိုင်တွယ်ဖြေရှင်းခြင်း၏ပြည့်စုံသောဥပမာတစ်ခုဖြစ်သည်။ URL domains gitbox.net ကို သုံးကြောင်းသတိပြုပါ။
<?php
// မျိုးစုံကိုအစပြု cURL လက်ကိုင်
$ch1 = curl_init();
$ch2 = curl_init();
// တည်ဆောက်သည် cURL ရွေးချယ်စရာများ
curl_setopt($ch1, CURLOPT_URL, "https://gitbox.net/api/endpoint1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, "https://gitbox.net/api/endpoint2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
// ဖြစ်ပေါ်လာခြင်း multi လက်ကိုင်
$mh = curl_multi_init();
// 添加单个လက်ကိုင်到 multi လက်ကိုင်
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// ကရိယာတန်းဆာ multi လက်ကိုင်
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
// ရလဒ်များကိုရယူပါ
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);
// တစ်ခုချင်းစီကိုဖယ်ရှားခြင်းနှင့်ပိတ်ပါ cURL လက်ကိုင်
curl_multi_remove_handle($mh, $ch1);
curl_close($ch1);
curl_multi_remove_handle($mh, $ch2);
curl_close($ch2);
// နောက်ဆုံးအနီးကပ် multi လက်ကိုင်
curl_multi_close($mh);
// ထုတ်ယူခြင်းတုံ့ပြန်မှု
echo "Response 1: " . $response1 . PHP_EOL;
echo "Response 2: " . $response2 . PHP_EOL;
?>
သင်ဤကဲ့သို့သောရေးသားထားပါကအန္တရာယ်များရှိလိမ့်မည်။
<?php
// အမှားသရုပ်ပြ,အနီးကပ်အနီးကပ် multi 再关闭单个လက်ကိုင်
$ch = curl_init("https://gitbox.net/api/endpoint");
$mh = curl_multi_init();
curl_multi_add_handle($mh, $ch);
// ကရိယာတန်းဆာ请求
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
// အမှား!တိုက်ရိုက်ပိတ်ပါ multi လက်ကိုင်
curl_multi_close($mh);
// ထို့နောက်တစ်ခုတည်းကိုပိတ်ပါ cURL(၎င်းသည်မမှန်ကန်သောအရင်းအမြစ်များကိုလက်လှမ်းမီစေနိုင်သည်)
curl_close($ch);
?>
ဤကုဒ်တွင် curl_multi_close ဟုခေါ်သည်။ ဆက်စပ်သောစီမံခန့်ခွဲမှုအရင်းအမြစ်များကိုထုတ်ပြန်သည်။ curl_close ($ ch) ကိုလိုက်နာပါကအမှားတစ်ခုသည်အချိန်အများစုကိုချက်ချင်းသတင်းပို့လိမ့်မည်မဟုတ်သော်လည်းအချို့သောပတ်ဝန်းကျင်တွင်အမှားအယွင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။
ပေါင်းစည်းရန်, အရင်းအမြစ်များကိုဖြန့်ချိမှု၏မှန်ကန်သောအမိန့်သည်အလွန်အရေးကြီးသည် ။ curl_multi_close ပြီးနောက်လက်ကိုင်တစ်ခုတည်းကိုရယူရန်သို့မဟုတ်ပိတ်ရန်မကြိုးစားပါနှင့်။ လုပ်ငန်းစဉ်အပြီးတွင်တင်းကြပ်စွာထူးဆန်းသောအမှားအယွင်းများကိုရှောင်ရှားနိုင်ပြီးဤအစီအစဉ်သည်ပိုမိုအားကောင်းနေကြောင်းသေချာစေသည်။
ပထမ ဦး ဆုံးဖယ်ရှားပါ ( curl_multi_remove_handle )
တစ်ခုတည်းသော Single ( curl_close )
နောက်ဆုံးတွင် Multi ( curl_multi_close )
သငျသညျဤအခြေခံစည်းမျဉ်းကိုကျွမ်းကျင်မှုအဖြစ်နေသမျှကာလပတ်လုံး, သင်ယုံကြည်စိတ်ချစွာဖြင့် curl multi- ချည်တောင်းဆိုမှုများကိုသုံးနိုင်သည်။