လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Close_Error (), socket_last_Error (), Socket_last_Error (), အမှားကိုင်တွယ်မှု၏လက်တွေ့ကျမှုကိုတိုးတက်စေရန် Custom error code ကိုမြေပုံဆွဲခြင်းဖြင့်မည်သို့ပြုလုပ်ရမည်နည်း။

Socket_Close_Error (), socket_last_Error (), Socket_last_Error (), အမှားကိုင်တွယ်မှု၏လက်တွေ့ကျမှုကိုတိုးတက်စေရန် Custom error code ကိုမြေပုံဆွဲခြင်းဖြင့်မည်သို့ပြုလုပ်ရမည်နည်း။

M66 2025-06-02

PHP socket ကိုပရိုဂရမ်ရေးဆွဲရာတွင်အမှားကိုင်တွယ်သည့်ယန္တရားသည်အစီအစဉ်၏ကြံ့ခိုင်မှုကိုသေချာစေရန်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ PHP သည် developer များရယူရန်နှင့် socket error များကိုရယူရန် socket_clear_error () နှင့် socket_last_error () socket_elect_error () () နှင့် socket_elect_error ()) ကိုထောက်ပံ့ပေးသည်။ သို့သော်ဤလုပ်ငန်းဆောင်တာနှစ်ခု၏ output သည်အဆင့်နိမ့်နေဆဲဖြစ်ပြီး developer များအတွက်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်နှင့်ဖြေရှင်းရန်အတွက်အဆင်မပြေမှုများရှိနေသေးသည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုနှစ်ခုကိုစိတ်ကြိုက်အမှားကုဒ်မြေပုံရေးဆွဲရေးယန္တရားတစ်ခုဖြင့်ပေါင်းစပ်ရန်မည်သို့ပေါင်းစပ်ရမည်ကိုလေ့လာလိမ့်မည်။

1 ။ အခြေခံလုပ်ဆောင်ချက်များကိုပြန်လည်သုံးသပ်

1 ။ Socket_last_error ()

ဤလုပ်ဆောင်ချက်သည်လတ်တလော Socket လည်ပတ်မှု၏အမှားကုဒ်ကိုပြန်ပို့သည်။ Parameters ထဲမသွားဘဲနောက်ဆုံး socient error code ကိုသင်ရရှိနိုင်ပါသည်။ သို့မဟုတ်အရင်းအမြစ်အတွက်သက်ဆိုင်ရာအမှားများကိုရရှိရန်သတ်သတ်မှတ်မှတ် socket အရင်းအမြစ်တစ်ခုတွင်သင်ဖြတ်သွားနိုင်သည်။

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, 'm66.net', 80);
$errCode = socket_last_error($socket);
echo "အမှားကုဒ်:$errCode\n";

2 ။ Socket_stror ()

အမှားကုဒ်၏စာသားဖော်ပြချက်ကိုရယူပါ။

 echo socket_strerror($errCode);

3 ။ Socket_Clear_Error ()

ဤလုပ်ဆောင်မှုသည်လက်ရှိသို့မဟုတ်သတ်မှတ်ထားသော socient error error status ကိုထုတ်ဖော်ပြောဆိုရန်လက်ရှိအချိန်တွင်အရေးယူဆောင်ရွက်မှုအသစ်ကိုအကျိုးသက်ရောက်စေသောအမှားအယွင်းဟောင်းကိုရှောင်ရှားရန်လက်ရှိသို့မဟုတ်သတ်မှတ်ထားသော socket error status ကိုရှင်းလင်းနိုင်သည်။

 socket_clear_error($socket);

2 ။ အဘယ်ကြောင့်အမှားကုဒ်မြေပုံကိုစိတ်ကြိုက်ပြင်ဆင်ရန်လိုအပ်သနည်း။

socket_strerror () သည် အမှားအယွင်းများကိုသတင်းအချက်အလက်ပေးသော်လည်း၎င်း၏သတင်းအချက်အလက်သည်ယေဘုယျအားဖြင့်ယေဘူယျအားဖြင့်အင်္ဂလိပ်ဘာသာဖြင့် ပိုမို. များသောအားဖြင့်အင်္ဂလိပ်ဘာသာတွင် ပိုမို. ရှုပ်ထွေးပြီးရှုပ်ထွေးသောအခြေအနေများအတွက်မရှင်းလင်းသောအရာများ (ဥပမာထုတ်လုပ်မှု, ထို့ကြောင့် "စိတ်ကြိုက်အမှားကုဒ်မြေပုံရေးဆွဲခြင်းယန္တရား" ကိုမိတ်ဆက်ပေးခြင်းသည်အမှားပြုပြင်ခြင်း၏အရည်အသွေးတိုးတက်စေရန်သော့ချက်ဖြစ်သည်။

3 ။ ထုံးစံအမှားကုဒ်မြေပုံအစီအစဉ်

အပေါင်းအသင်းတစ်ခုမှတဆင့်ဘုံအမှားကုဒ်များကိုကျွန်ုပ်တို့မြေပုံဆွဲနိုင်သည်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -

 $socketErrorMap = [
    10061 => ['msg' => 'ချိတ်ဆက်မှုအားငြင်းဆန်သည်,Target Host သည်နားထောင်ခြင်းဝန်ဆောင်မှုမရှိပါ', 'level' => 'error'],
    10060 => ['msg' => 'ဆက်သွယ်မှုအချိန်ကုန်,ဆာဗာသည်တုန့်ပြန်ခြင်းမရှိပါ', 'level' => 'warning'],
    10054 => ['msg' => 'ဝေးလံခေါင်သီသောအိမ်ရှင်သည်ရှိပြီးသားဆက်သွယ်မှုကိုပိတ်ထားသည်', 'level' => 'error'],
    // မြေပုံများထပ်ထည့်ပါ...
];

IV ။ အထွေထွေအမှားကိုင်တွယ် function ကို encapsult

 function handleSocketError($socket = null, $clear = true) {
    $errCode = socket_last_error($socket);
    global $socketErrorMap;

    $defaultMsg = socket_strerror($errCode);
    $mapped = $socketErrorMap[$errCode] ?? ['msg' => $defaultMsg, 'level' => 'notice'];

    if ($clear) {
        socket_clear_error($socket);
    }

    // logging မှတိုးချဲ့ခဲ့သည်、ခြွင်းချက်ပစ်ချစသည်တို့ကို
    echo "[{$mapped['level']}] အမှားကုဒ်: $errCode - {$mapped['msg']}\n";
}

5 ။ ဥပမာ - ပြည့်စုံသောအသုံးပြုမှုအခြေအနေများ

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
@socket_connect($socket, 'm66.net', 12345); // ဒီ port ကိုမော်နီတာအဘယ်သူမျှမရှိသည်ဟုယူဆ

handleSocketError($socket); // output ကိုပိုမိုဖော်ရွေအမှားမက်ဆေ့ခ်ျကို

socket_close($socket);

output ကိုဖြစ်လိမ့်မည်:

 [error] အမှားကုဒ်: 10061 - ချိတ်ဆက်မှုအားငြင်းဆန်သည်,Target Host သည်နားထောင်ခြင်းဝန်ဆောင်မှုမရှိပါ

6 ။ လက်တွေ့ကျသောအကြံပြုချက်များ

  • ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်နှင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်ခွဲခြင်း

  • logging systems နှင့်ပေါင်းစပ်အသုံးပြုပါ - သင် monolog ကဲ့သို့သောမော်နီတာစာကြည့်တိုက်များကိုသင်ဖိုင်များ, ဒေတာဘေ့စ်များသို့မဟုတ်စောင့်ကြည့်လေ့လာခြင်းစနစ်များကိုမှတ်တမ်းတင်ရန်မှတ်တမ်းတင်နိုင်သည်။

  • အလိုက်သင့်ပြောင်းလဲခြင်းမျိုးစုံကြင်နာမှုဆိုင်ရာပံ့ပိုးမှု - အမှားအယွင်းများကိုဘာသာစကားမျိုးစုံခွဲခြားထားသောပုံစံများသို့တိုးချဲ့နိုင်သည်။

7 ။ အကျဉ်းချုပ်

Socket_Close_Error () နှင့် Socket_last_Error () သည်ထုံးစံအမှားမြေပုံရေးဆွဲရေးယန္တရားများနှင့်ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပိုမိုသန့်စင်သောအမှားများနှင့်တုန့်ပြန်မှုများကိုပိုမိုကောင်းမွန်စွာတိုးတက်အောင်ပြုလုပ်နိုင်ပြီး Socket application များ၏ထိန်းသိမ်းမှုနှင့်သုံးစွဲသူများအားအလွန်တိုးတက်အောင်လုပ်နိုင်သည်။ ဤချဉ်းကပ်နည်းသည်အမှား semantics ၏ဖတ်နိုင်မှုကိုပိုမိုကောင်းမွန်စေရုံသာမကနောက်ဆက်တွဲတိုးချဲ့မှုများအတွက်အခြေခံအုတ်မြစ် (ဥပမာ Retry Logging Logging စသဖြင့်) အုတ်မြစ်ချသည်။ ၎င်းသည် developer များအတွက်မြှင့်တင်ရန်အတွက်အကောင်းဆုံးအလေ့အကျင့်ဖြစ်သည်။