လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_last_Error ကဘာကြောင့် 0 ကိုအမြဲတမ်းပြန်လာတာလဲ။

Socket_last_Error ကဘာကြောင့် 0 ကိုအမြဲတမ်းပြန်လာတာလဲ။

gitbox 2025-05-31

Socket_last_Error () PHP ကို ​​အသုံးပြု. ပရိုဂရမ်းမင်းကွန်ယက်များအပေါ်ကွန်ပျူတာများပါ 0 င်သည့်အတွက်အလွန်အရေးကြီးသော debugging tool တစ်ခုဖြစ်သည်။ နောက်ဆုံးပေါ် socket လည်ပတ်မှုတွင်ဖြစ်ပွားသောအမှားကုဒ်ကိုကျွန်ုပ်တို့အားကူညီနိုင်ပြီးပြ the နာကိုရှာပါ။ သို့သော် developer များစွာက Socket_last_Error () သည် 0 0 ကိုအမြဲတမ်းပြန်လာသည်။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်၏အဓိကအကြောင်းရင်းများကိုနက်နက်နဲနဲနှင့်သင်လျစ်လျူရှုထားသည့်အဓိကအချက်များအပေါ်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

1 ။ Socket_last_Error () အလုပ်လုပ်သည်ကိုနားလည်ပါ

Socket_Last_Error () function ၏လုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသော Socket Resour တွင်ဖြစ်ပေါ်သောနောက်ဆုံးအမှားကုဒ်ကိုပြန်ပို့ရန်ဖြစ်သည်။ Socket Resources ကိုမထုတ်ပြန်ပါကလက်ရှိ default socket အတွက်အမှားကုဒ်ကိုပြန်ပို့သည်။ သတိပြုသင့်သည်မှာ Function သည်နောက်ဆုံးစစ်ဆင်ရေးတွင်အမှားကုဒ်ကိုသာပြန်လည်ပေးလိမ့်မည်။

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "Socket ကိုဖန်တီးရန်မအောင်မြင်ပါ,အမှားကုဒ်:" . socket_last_error() . "\n";
}

2 ။ အဘယ်ကြောင့်အမြဲတမ်း 0 ပြန်လာသနည်း။

socket_last_Error () 0 0 ပြန်လာရန်အတွက်များသောအားဖြင့်များစွာသောအကြောင်းရင်းများရှိသည်။

2.1 socket အရင်းအမြစ်များကိုဖြတ်သန်းရန်မေ့နေသည်

Socket_last_Error () အဘယ်သူမျှမ socket ကိုမသတ်မှတ်ပါက default socket ၏အမှားအယွင်းကိုပြန်ပို့လိမ့်မည်။ အကယ်. သင်သည် socket မျိုးစုံကိုအသုံးပြုနေပါကသို့မဟုတ်အတိအလင်းမဖော်ပြထားပါက 0 ကိုပြန်လာလိမ့်မည်။

 // အမှားသရုပ်ပြ,အဘယ်သူမျှမ socket ကိုသတ်မှတ်ထားသော
$errorCode = socket_last_error();  // ဖြစ်ကောင်း0

// မှန်ကန်သောသရုပ်ပြ
$errorCode = socket_last_error($socket);

2.2 စစ်ဆင်ရေးအောင်မြင်ခဲ့သည်သို့မဟုတ်အမှားကိုရှင်းလင်းခဲ့သည်

Socket စစ်ဆင်ရေးကိုအောင်မြင်စွာလုပ်ဆောင်သောအခါအမှားကုဒ်သည် 0 သို့ပြန်လည်စတင်လိမ့်မည်။ ထို့အပြင်သင် socket_clear_error () ကိုခေါ်ပါကအရင်အမှားအယွင်းကိုရှင်းလင်းလိမ့်မည်။

 // စစ်ဆင်ရေးမတိုင်မီအမှားများကို detect
$errorCode = socket_last_error($socket); 

// ဒါကြောင့်အောင်မြင်စွာခေါ်ခဲ့လျှင် socket_connect သို့မဟုတ် socket_write,အမှားရှင်းလင်းခဲ့ကြပေမည်
socket_clear_error($socket);

// အခုအချိန်တွင် socket_last_error() ပြန်လာပါလိမ့်မယ် 0

2.3 လုံးဝအမှားအယွင်းများမရှိပါ

တခါတရံမှာ, သင်စစ်ဆင်ရေးပုံမှန်မဟုတ်သောဖြစ်ပေမယ့်တကယ်တော့စီးပွားရေးယုတ္တိဗေဒသို့မဟုတ်အခြားနေရာများတွင်အမှားတစ်ခုဖြစ်ပြီး socket ကိုယ်နှိုက်ကအမှားတစ်ခုဖြစ်ပေါ်လာသည်မဟုတ်။ ထို့ကြောင့် socket_last_Error () 0 ငလျင်အတွက် ပုံမှန်ဖြစ်သည်။

3 ။ ဘုံအသုံးပြုမှုဥပမာ

အထက်ပါကြိုတင်ကာကွယ်မှုများနှင့်ပေါင်းစပ်။ debug အမှားများသို့အောက်ပါ mode ကိုအသုံးပြုရန်အကြံပြုပါသည်။

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "Socket ကိုဖန်တီးရန်မအောင်မြင်ပါ,အမှားကုဒ်:" . socket_last_error() . "\n";
    exit;
}

$result = socket_connect($socket, "gitbox.net", 80);
if ($result === false) {
    $err = socket_last_error($socket);
    echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်:$err - " . socket_strerror($err) . "\n";
} else {
    echo "အောင်မြင်စွာဆက်သွယ်မှု!\n";
}

ဤနေရာတွင်ဤနေရာတွင်မှတ်သားရန်အထူးအရေးကြီးသည်မှာတိကျသောအမှားအချက်အလက်များရရှိရန် Socket_last_Error () ကို Socket Remone သို့ကူးပြောင်းရမည်။

4 ။ အပိုဆောင်းအကြံပြုချက်များ

  • အမှားမက်ဆေ့ချယသန့်ရှင်းရေး - အကယ်. သင်သည် socket_cloear_Error ($ socket) ဟုခေါ်ပါက socket_last_Error ($ socket) 0 င်ပြန်လာလိမ့်မည်။

  • ပြတ်တောင်းပြတ်တောင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းမဟုတ်သောလုပ်ငန်းများ - ပြတ်ပြတ်သားသားမပိတ်ထားသော socket operations များတွင်အမှားအယွင်းများသည် socket_last_Error () ကိုချက်ချင်းထင်ဟပ်ရန်နှင့်အခြားပြည်နယ်များနှင့်ပေါင်းစပ်။ စစ်ဆေးရန်လိုအပ်သည်။

  • Error Code ဘာသာပြန်ခြင်း - Socket_Stror Orderror () အမှားကုဒ်များကိုလွယ်ကူစွာနားလည်နိုင်သောအမှားအယွင်းများသို့ပြောင်းရန်။


Socket_last_Error () ကိုနားလည်ခြင်းနှင့်မှန်ကန်သောအသုံးပြုမှုကိုမှန်ကန်စွာအသုံးပြုခြင်းသည်ကွန်ယက်ကိုလျှော့ချနိုင်ပြီးအမှားကုဒ်သည်အမြဲတမ်း 0 င်လာကြောင်းနှင့်သင်၏ network program ကိုပိုမိုအားကောင်းစေသည့်အတွက်ဤဆောင်းပါးကသင့်အားရှာဖွေရန်မျှော်လင့်ပါသည်။