PHP Network Programming တွင် Socket သည် developer များနှင့်ဆာဗာများအကြားအချက်အလက်ဖလှယ်မှုကိုပိုမိုပြောင်းလွယ်ပြင်သောထိန်းချုပ်မှုကိုခွင့်ပြုသည်။ သို့သော်၎င်း၏နောက်ခံဝိသေသလက္ခဏာများကြောင့်ပရိုဂရမ်မာများသည်အရင်းအမြစ်များကိုစီမံရန်လိုအပ်သည်။ ဤဆောင်းပါးသည်အများအားဖြင့် လျစ်လျူရှု ခဲ့သော်လည်းအလွယ်တကူလျစ်လျူရှုထားသည့်ပြ issue နာကိုဆွေးနွေးပါမည်။
Socket_Close_Error () သည် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ ၎င်းကိုများသောအားဖြင့် socket_last_Error () တွင်အသုံးပြုသည်။ ၎င်းသည်နောက်ဆုံး socket operty code ကိုရရန်အသုံးပြုသည်။
အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "ဖန်တီးမှုပျက်ကွက်: " . socket_strerror(socket_last_error()) . PHP_EOL;
socket_clear_error();
}
ဤလုပ်ဆောင်မှု၏မူလရည်ရွယ်ချက်မှာ developer များအနေဖြင့် socket operations မျိုးစုံလုပ်ဆောင်သည့်အခါလက်ရှိအမှားအယွင်းများကိုယခင်စစ်ဆင်ရေးများကယခင်စစ်ဆင်ရေးများကယခင်စစ်ဆင်ရေးများကလက်ဝဲဘက်ရှိ,
Developer အများအပြားသည် Socket Creation သို့မဟုတ် Connection ပျက်ကွက်ပြီးနောက်အမှားကုဒ်များကိုပုံမှန်အားဖြင့်ရှင်းရှင်းလင်းလင်းရှင်းရှင်းလင်းလင်းဖော်ပြပြီးနောက်နောက်ဆက်တွဲလည်ပတ်မှုနှင့်အချက်အလက်များကိုပေးပို့ခြင်းကဲ့သို့သောနောက်လည်ပတ်မှုကိုလုပ်ဆောင်ရန်ဤ Socket Object ကိုဆက်လက်အသုံးပြုသည်။ သို့သော်ဤအလေ့အကျင့်သည် socket ကို ဆက်. မဆက်ပါကပြ problems နာများစွာကိုဖြစ်ပေါ်စေနိုင်သည်။
အောက်ပါဥပမာကိုသုံးသပ်ကြည့်ပါ -
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . PHP_EOL;
socket_clear_error();
}
// re- စတင်ရန်မေ့လျော့ socket
$result = socket_connect($socket, "m66.net", 80);
if ($result === false) {
echo "连接ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . PHP_EOL;
}
ဒီဇာတ်လမ်းမှာ societ_create () ကို ဖန်တီးဖို့ပျက်ကွက်ပါက မှားယွင်းစွာ ပြန်လာပြီးမမှားသောနေရာ၌မမှန်ကန်သောအရင်းအမြစ်ပေါ်တွင်လည်ပတ်ရန်ဖြစ်သည်။ ၎င်းသည်အောင်မြင်ရုံသာမက PHP သည် PHP ကိုသတိပေးခြင်းသို့မဟုတ်ပရိုဂရမ်ကွပ်မျက်ခြင်းကိုပင်ကြားဖြတ်စေနိုင်သည်။
socket_connect () , socket_send () သို့မဟုတ်အခြား socket functions များကိုခေါ်ဆိုသည့်အခါ, အဝင်သည် မှားယွင်းသော သို့မဟုတ်ယိုယွင်းဖောက်ထားသော socket တစ်ခုဖြစ်လာပါက၎င်းသည်ကြီးမားသော runtime အမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မည်။
အမှားကုဒ်ကိုရှင်းလင်းသော်လည်းနောက်ခံပြ issue နာကိုမဖြေရှင်းနိုင်သော (i.e. Socket invalminal) ကိုမပြုပြင်ခြင်းသည်နောက်ဆက်တွဲအမှားများကိုရှုပ်ထွေးစေလိမ့်မည်။ ပြ problems နာများကိုဖြေရှင်းသည့်အခါ developer များအမှားအယွင်းများ၏အမှန်တကယ်အကြောင်းရင်းကိုလျစ်လျူရှုနိုင်သည်။
socket operations တစ်ပြိုင်နက်တည်းရှိသည့်ပတ်ဝန်းကျင်တွင်မမှန်မကန် socket သည် I / O Product တွင်ပါ 0 င်သည်။
အမှားကုဒ်ကိုရှင်းလင်းရန် Socket_clear_Error () ကို Call သို့ခေါ်ဆိုပြီးနောက် Socket ကိုအားပြန်ကြားရန်လိုအပ်သည်ကိုသင်အတည်ပြုသင့်သည်။
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "ဖန်တီးမှုပျက်ကွက်: " . socket_strerror(socket_last_error()) . PHP_EOL;
socket_clear_error();
// 重新ဖန်တီး socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("再次ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()));
}
}
$result = socket_connect($socket, "m66.net", 80);
if ($result === false) {
echo "连接ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . PHP_EOL;
}
၎င်းသည်နောက်ဆက်တွဲစစ်ဆင်ရေးများတွင်မမှန်ကန်သောသို့မဟုတ် undefined Socket ကိုအသုံးပြုခြင်းကိုရှောင်ရှားသည်။
Socket_Close_Error () သည်အမှားကိုင်တွယ်ပုံ၏တိကျမှန်ကန်မှုကိုတိုးတက်စေရန်အရန်ကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်၎င်းသည် socket ကိုယ်နှိုက်ကိုမပြုပြင်ပါ။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်သင်မှတ်မိရပေမည် - Socket ဖန်တီးမှုသည်မအောင်မြင်ပါကအရင်းအမြစ်ဟောင်းများကိုဆက်လက်အသုံးချမည့်အစား၎င်းကိုပြန်လည်သုံးသပ်မည့်အစား၎င်းကိုပြန်လည်တည်ဆောက်သင့်သည် ။ ဒီလိုမှမဟုတ်ရင်ဆက်သွယ်ရေးပျက်ကွက်မှုကအနည်းဆုံးတော့အဆိုးဆုံးမှာတော့ဒီဟာကလျှောက်လွှာတစ်ခုလုံးရဲ့ယုတ္တိဗေဒကိုဖြစ်ပေါ်စေပြီးလုံခြုံရေးအန္တရာယ်များကိုဖြစ်စေလိမ့်မယ်။
ကောင်းသောအမှားကိုင်တွယ်ခြင်းနှင့်အရင်းအမြစ်စီမံခန့်ခွဲမှုအလေ့အထများကိုတီထွင်ခြင်းအားဖြင့်သာကျွန်ုပ်တို့သည်ခိုင်မာသောယုံကြည်စိတ်ချရသော PHP ကွန်ယက်လျှောက်လွှာကိုအမှန်တကယ်ရေးနိုင်ပါသည်။