PHP တွင် Socket Programming တွင် socket_bind () function ကိုအသုံးပြုသောအခါသတ်မှတ်ထားသောလိပ်စာနှင့် port တစ်ခုသို့ socket တစ်ခုနှင့်ချိတ်ဆက်ရန်အသုံးပြုသည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုဖြစ်စဉ်တွင် Socket_bind () သည် port များသိမ်းဆည်းခြင်း, ခွင့်ပြုချက်မလုံလောက်ခြင်းကြောင့်အမှားတစ်ခုသို့မဟုတ်လိပ်စာပုံစံဖြင့်အမှားတစ်ခုသတင်းပို့နိုင်သည်။ အမှားတစ်ခုသတင်းပို့ပြီးနောက်အမှားအယွင်းသည် Socket ၏အမှားတန်းစီတွင်ဆက်လက်ရှိနေ ဦး မည်။
ဤပြ problem နာကိုဖြေရှင်းရန် PHP သည် Socket-Related Resolformal Information ကိုသန့်ရှင်းရေးလုပ်ရန် socket_clear_Error () function ကိုထောက်ပံ့ပေးသည်။
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()));
}
// တစ် ဦး သိမ်းပိုက် port ကိုချည်နှောင်ရန်ကြိုးစားပါ
if (!socket_bind($socket, '127.0.0.1', 8080)) {
echo "绑定ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;
}
?>
Port 8080 ကို သိမ်းပိုက်လိုက်သောအခါ Socket_bind () သည် မှားယွင်းစွာ ပြန်ယူပြီးအမှားကုဒ်ကိုသတ်မှတ်ပြီးအမှားကုဒ်ကို Socket_last_Error () မှတဆင့် socket_strorror () ကို သုံးပါ။
အကယ်. အမှားတစ်ခုသတင်းပို့ပြီးနောက် Socket_bind () အမှားကိုမသန့်ရှင်းပါကအမှားအယွင်းများကို အသုံးပြု. နောက်ဆက်တွဲလုပ်ဆောင်မှုများကိုဆက်လက်ထိခိုက်နိုင်သည်။
The Socket_Close_Error () function ကိုသတ်မှတ်ထားသော socket ၏အမှားအယွင်းကိုရှင်းလင်းရန်အသုံးပြုသည်။ socket parameters တွေကိုမဖွင့်ပါက Global Socket Error Message ကိုရှင်းလင်းပါ။
ဥပမာ -
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()));
}
if (!socket_bind($socket, '127.0.0.1', 8080)) {
echo "绑定ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;
// သန့်ရှင်းရေးလုပ်သည် socket အမှားသတင်းစကား,နောက်ဆက်တွဲသက်ရောက်မှုကိုရှောင်ကြဉ်ပါ
socket_clear_error($socket);
}
// သငျသညျနောက်ပိုင်းမှာလုပ်ဖို့ဆက်လက်နိုင်ပါတယ် socket အခြားစစ်ဆင်ရေးလုပ်ဆောင်
// ...
?>
Socket_Close_Error ($ socket) ကိုခေါ်ဆိုခြင်းအားဖြင့်; ဒီ socket မှာရှိတဲ့အမှားမက်ဆေ့ခ်ျကိုသင်ရှင်းရှင်းလင်းလင်းမြင်နိုင်ပြီးသန့်ရှင်းတဲ့အခြေအနေကိုပြန်သွားပါစေ။
Socket_Close_Error () အမှားအယွင်းကိုသာသန့်ရှင်းစေပြီးအမှား၏အကြောင်းရင်းများကိုမဖြေရှင်းနိုင်ပါ။ ဥပမာအားဖြင့် port ကိုသိမ်းပိုက်ထားပြီး developer မှကိုယ်တိုင်ဖြေရှင်းရန်လိုအပ်သည်။
မျိုးစုံစစ်ဆင်ရေးများအတွင်း socket object ၏အမှားအယွင်းများသည်နောက်ဆက်တွဲယုတ္တိဗေဒကိုအကျိုးသက်ရောက်လိမ့်မည်မဟုတ်ပါ။
အကယ်. သင်သည်မည်သည့် parameters တွေကိုမဆိုဖြတ်သန်းမသွားပါကလက်ရှိချည်မှ Socket error messages များအားလုံးကိုသန့်ရှင်းရေးလုပ်ပါ။
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()));
}
if (!socket_bind($socket, '127.0.0.1', 8080)) {
echo "绑定ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;
socket_clear_error($socket); // သန့်ရှင်းရေးလုပ်သည်错误
}
// စောင့်ကြည့်သို့မဟုတ်အခြားစစ်ဆင်ရေးဆက်လက်
if (!socket_listen($socket)) {
echo "监听ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;
socket_clear_error($socket);
}
// ရုပ်သိမ်းခြင်း socket
socket_close($socket);
?>
အနှစ်ချုပ်တွင် Socket_Close_Error () သည် socky or or or orss ပြည်နယ်များကိုကိုင်တွယ်သည့်အခါအရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ သင်၏ Socket ပရိုဂရမ်းမင်းကိုပိုမိုခိုင်မာစေပြီးသမိုင်းအမှားအယွင်းများကြောင့်ဖြစ်ပေါ်လာသောပုံမှန်မဟုတ်သောအပြုအမူများကိုပြုလုပ်နိုင်သည်။