PHP Network Programming တွင် Socket သည် client-side နှင့် server-side ဆက်သွယ်ရေးကိုအကောင်အထည်ဖော်ရန်အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ဆက်သွယ်ရေး၏တည်ငြိမ်မှုနှင့်လုံခြုံရေးကိုသေချာစေရန်အတွက်အမှားကိုင်တွယ်ခြင်းသည်မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ Socket တွင်အမှားအယွင်းများကိုရှင်းလင်းရန် PHP သည် socket_clear_Error () function ကိုထောက်ပံ့ပေးသည်။ သို့သော်၎င်း၏အသုံးပြုမှုအခြေအနေများနှင့်အသေးစိတ်အချက်အလက်များသည် 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာဘက်တွင်ကွဲပြားသည်။ ဤဆောင်းပါးသည် socket_clear_Error () နှင့် 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာဘက်တွင်၎င်း၏ကွဲပြားခြားနားသော applications များကိုအသေးစိတ်ဖော်ပြထားသည်။
Socket_Close_Error () သည် php socket code code ကိုရှင်းလင်းရန်အသုံးပြုသော PHP Socket explaning တွင် function တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
bool socket_clear_error(resource $socket)
parameters တွေကို - ခိုင်လုံသော socket အရင်းအမြစ်။
Return Value : Boolean Value, အောင်မြင်မှုအတွက် စစ်မှန်တဲ့ ပြန်လာ, ပျက်ကွက်မှုအတွက် မှားယွင်းစွာ ပြန်သွားပါ။
အမှားအယွင်းများကိုရှင်းလင်းပြီးနောက် Socket သည်သမိုင်းအမှားအယွင်းများကြောင့်နောက်ဆက်တွဲဆက်သွယ်ရေးကိုထိခိုက်မှုကိုရှောင်ရှားရန် Socket သည်ပုံမှန်လည်ပတ်မှုကိုပြန်လည်စတင်နိုင်သည်။
ဆာဗာဘက်မှာ port ကိုနားထောင်ခြင်းအတွက် 0 န်ဆောင်မှုခံယူမှုများနှင့်အပြောင်းအလဲများကိုလက်ခံခြင်းအတွက် 0 န်ဆောင်မှုခံယူရန်တာဝန်ရှိသည်။ ဆာဗာဘက်မှာရေရှည်လုပ်ငန်းစဉ်ဖြစ်သည့်အတွက် Socket State Maintenance သည်အထူးအရေးကြီးသည်။
server-side socockets များသည်အမှားများစွာကြောင့်အကြောင်းပြချက်အမျိုးမျိုးကြောင့်အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။
ကွန်ယက်အတက်အကျများသည်ဆက်သွယ်မှုပြတ်တောက်သို့ ဦး တည်သည်။
တရားမဝင်သုံးစွဲသူတောင်းဆိုမှုတစ်ခုကခြွင်းချက်တစ်ခုချထားသည်။
အရင်းအမြစ်ကန့်သတ်ချက်များသည်ခွဲစိတ်ကုသမှုကိုပျက်ပြားစေသည်။
ဤအမှားများကိုအချိန်တန်လျှင်သန့်ရှင်းရေးလုပ်ရန်လိုအပ်သည်။
အောက်ပါဥပမာသည် connection တစ်ခုရရှိပြီးနောက် socient societ ပေါ်ရှိ Socket Errorms များကိုရှာဖွေတွေ့ရှိခြင်းနှင့်ရှင်းလင်းခြင်းလုပ်ငန်းစဉ်ကိုပြသသည်။
<?php
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($server, "0.0.0.0", 8080);
socket_listen($server);
while (true) {
$client = socket_accept($server);
if ($client === false) {
echo "Accept failed\n";
continue;
}
// ဖောက်သည်တောင်းဆိုမှုများကိုမလုပ်ဆောင်မီအမှားအယွင်းကိုရှင်းလင်းပါ
if (!socket_clear_error($client)) {
echo "Failed to clear socket error\n";
socket_close($client);
continue;
}
$input = socket_read($client, 1024);
if ($input === false) {
echo "Read error: " . socket_strerror(socket_last_error($client)) . "\n";
} else {
$output = "Server response: " . trim($input);
socket_write($client, $output, strlen($output));
}
socket_close($client);
}
socket_close($server);
?>
client_clear_error () ကိုအသုံးပြုပြီးနောက်ဆက်သွယ်မှုကိုသေချာစေရန်ယခင်အမွေအနှစ်အမှားအယွင်းကိုရှင်းလင်းရန် Socket_Close_Error () ကိုအသုံးပြုပါ။
အကယ်. အမှားကို ရှင်းလင်း. မရပါကအမှားပျံ့နှံ့ခြင်းကိုရှောင်ရှားရန်ဆက်သွယ်မှုကိုတိုက်ရိုက်ပိတ်ပါ။
ဒီအဆင့်ဟာဆာဗာဘက်မှာအထူးအရေးကြီးတယ်, ဘာဖြစ်လို့လဲဆိုတော့ဆာဗာသည်ကြီးမားသောဆက်သွယ်မှုများစွာကိုကိုင်တွယ်ရန်လိုအပ်သည်, အကြောင်းမှာဆာဗာသည်ဆက်သွယ်မှုများစွာကိုကိုင်တွယ်ရန်လိုအပ်သည်။
0 န်ဆောင်မှုခံယူသူသည်ဆာဗာနှင့်ချိတ်ဆက်ရန်နှင့်တောင်းဆိုမှုများကိုပေးပို့ခြင်းအတွက်တာ 0 န်ရှိသည်။
client socket အမှားများကိုအများအားဖြင့် connection ပျက်ကွက်ခြင်းသို့မဟုတ်ဒေတာလွှဲပြောင်းခြင်းကိုပုံမှန်မဟုတ်သောအခါဖြစ်သည်။ ဥပမာအားဖြင့်:
ဆာဗာကို ဆက်သွယ်. မရပါ။
ဆက်သွယ်မှုကိုဆာဗာတစ်ဝက်လောက်ပိတ်ထားသည်။
Read နှင့်ရေးရန်စစ်ဆင်ရေးခြွင်းချက်ရေးသားပါ။
လာမည့်ဆက်သွယ်မှုသို့မဟုတ်တောင်းဆိုမှုကိုချောချောမွေ့မွေ့ဆက်လက်ဆောင်ရွက်နိုင်သည်ကိုသေချာစေရန် client သည်အမှားအယွင်းကိုရှင်းလင်းစေသည်။
အောက်ပါဥပမာသည် socket_clear_error () မသုံးမီ 0 န်ဆောင်မှုခံယူသူသည်ဆာဗာနှင့်ဆက်သွယ်ကြောင်းဖော်ပြသည်။
<?php
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($client === false) {
die("Socket creation failed\n");
}
if (!socket_connect($client, "m66.net", 8080)) {
echo "Connect failed: " . socket_strerror(socket_last_error($client)) . "\n";
socket_clear_error($client);
socket_close($client);
exit;
}
// အောင်မြင်သောဆက်သွယ်မှုပြီးနောက်,ရှင်းလင်းသောအမှားများ
socket_clear_error($client);
$message = "Hello Server";
socket_write($client, $message, strlen($message));
$response = socket_read($client, 1024);
if ($response === false) {
echo "Read error: " . socket_strerror(socket_last_error($client)) . "\n";
socket_clear_error($client);
}
echo "Server reply: " . $response . "\n";
socket_close($client);
?>
Consocke_Close_Error () သည်နောက်ဆက်တွဲစစ်ဆင်ရေးကိုထိခိုက်စေခြင်းမှအမှားအယွင်းကိုကာကွယ်ရန်ပျက်ကွက်ပြီးနောက် connection_clear_error
ဆက်သွယ်မှုအောင်မြင်ပြီးနောက် Socket_Close_Error () ကို ဆက်သွယ်ရေးလမ်းကြောင်းအားသန့်ရှင်းသောနေရာကိုသေချာစေရန်တစ်ချိန်ကခေါ်ဆိုနိုင်သည်။
စာဖတ်ခြင်းနှင့်ရေးသားခြင်းလုပ်ငန်းစဉ်အတွင်းအမှားတစ်ခုဖြစ်ပေါ်သောအခါ, နောက်လာမည့်အဆင့်ကိုလွယ်ကူချောမွေ့စေရန်အချိန်အတွက်အမှားအယွင်းကိုအချိန်ယူပါ။
ရှုထောင့် | ဆာဗာဘက် | ဖောက်သည် |
---|---|---|
ကြိမ်နှုန်းကိုင်တွယ်အမှားအမှား | အမြင့်, တစ်ပြိုင်နက်တည်းဆက်သွယ်မှုအမြောက်အများကိုကိုင်တွယ်ရန်လိုအပ်သည် | အနိမ့်, များသောအားဖြင့်တစ်ခုတည်းဆက်သွယ်မှုကိုကိုင်တွယ် |
အမှားအချိန်ကိုရှင်းလင်းပါ | ဆက်သွယ်မှုကိုလက်ခံပြီးနောက်, တောင်းဆိုမှုကိုမလုပ်ဆောင်မီ | ဆက်သွယ်မှုပျက်ကွက်ပြီးနောက်သို့မဟုတ်စာဖတ်ခြင်းနှင့်ပျက်ကွက်ခြင်းပြီးနောက် |
သက်ရောက်မှုအကွာအဝေး | 0 န်ဆောင်မှုတစ်ခုလုံးကိုအကျိုးသက်ရောက်နိုင်သည် | တစ်ခုတည်းဆက်သွယ်မှုသို့မဟုတ်တောင်းဆိုမှုကိုသက်ရောက်သည် |
အရင်းအမြစ်ဖြန့်ချိမှု | မသင့်လျော်သောမှားယွင်းစွာသန့်ရှင်းရေးပြုလုပ်ခြင်းသည်အရင်းအမြစ်ယိုစိမ့်မှုဆီသို့ ဦး တည်သွားနိုင်သည် | အမှားအယွင်းများကိုအချိန်မီသန့်ရှင်းရေးပြုလုပ်ခြင်းသည်လျင်မြန်စွာပြန်လည်ရယူရန်ကူညီသည် |
Socket_Close_Error () သည် PHP Socket Programming တွင်အမှားအယွင်းများအတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ဆာဗာဘက်သည်ဆက်သွယ်မှုကိုလက်ခံခြင်းနှင့်သမိုင်းဆိုင်ရာအမှားအယွင်းများကို 0 င်ရောက်စွက်ဖက်ခြင်းမှရှောင်ရှားရန်တောင်းဆိုခြင်းကိုလက်ခံခြင်းမပြုမီအမှားအယွင်းကိုရှင်းလင်းစွာသန့်ရှင်းသင့်သည်။ ဆက်သွယ်မှုသည်ဆက်သွယ်ရေးနှင့်ယုံကြည်စိတ်ချရမှုကိုသေချာစေရန်အမှားအယွင်းများပျက်ကွက်သည့်အခါ client သည်၎င်းကိုစာဖတ်ခြင်းနှင့်ဖတ်ရှုသောအခါ၎င်းကိုခေါ်ဆိုလိမ့်မည်။ ဤလုပ်ဆောင်မှုကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်ကွန်ယက်အက်ပလီကေးရှင်းများ၏တည်ငြိမ်မှုနှင့်ကြံ့ခိုင်မှုကိုတိုးတက်စေနိုင်သည်။