Socket သည် PHP ကို အသုံးပြု. PHP ကိုကွန်ပျူတာများပါ 0 င်သည့်ကွန်ယက်များဖြစ်သောပရိုဂရမ်းမင်းကွန်ယက်များပြုလုပ်သောအခါအလွန်အရေးကြီးသောနည်းလမ်းဖြစ်သည်။ သို့သော်အမျိုးမျိုးသောအမှားအယွင်းများကို socket connection စဉ်အတွင်းမကြာခဏကြုံတွေ့လေ့ရှိသည်။ အကယ်. ဤအမှားအယွင်းများကိုအချိန်မီမသန့်ရှင်းပါကအမှား stacking သည်ပရိုဂရမ်ခြွင်းချက်များသို့မဟုတ်ပျက်ကျလိမ့်မည်။ ကံကောင်းထောက်မစွာပင် PHP သည် socket just များကိုပုံမှန်သန့်ရှင်းရေးလုပ်ရန် socket_clear_Error function ကိုထောက်ပံ့ပေးသည်။
ဤဆောင်းပါးသည် Socket_clear_Error_ERRORRORRORRORRORRE နှင့်၎င်း၏လျှောက်လွှာကိုအမှန်တကယ်စီမံကိန်းများအတွက်သင့်အားထိရောက်စွာကူညီရန်အမှန်တကယ်စီမံကိန်းများတွင်မိတ်ဆက်ပေးလိမ့်မည်။
ကွန်ယက်ဆက်သွယ်မှုတွင်အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါတိုင်းအမှားအချက်အလက်များကိုထုတ်ပေးလိမ့်မည်။ အကယ်. ၎င်းကိုအချိန်မီမပြုလုပ်ပါကဤအမှားအချက်အလက်သည်အမှားတန်းစီတွင်စုဆောင်းလိမ့်မည်။ အမှားအယွင်းများတိုးလာသည်နှင့်အမျှပရိုဂရမ်၏အမှားကိုင်တွယ်မှုသည်ပိုမိုရှုပ်ထွေးလာပြီးပိုမိုရှုပ်ထွေးလာပြီးပိုမိုရှုပ်ထွေးလာပြီးကွင်းဆက်တုံ့ပြန်မှုများဖြစ်ပေါ်လာသည်။
ဥပမာအားဖြင့်, ပိတ်ထားသော socket, သို့မဟုတ်ထပ်ခါတလဲလဲဆက်သွယ်မှုပြတ်တောက်မှုများကိုဖတ်ရန်စဉ်ဆက်မပြတ်ကြိုးပမ်းမှုများသည်အမှားအယွင်းများကိုစုဆောင်းရန်အမှားအယွင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။
Socket_Close_Error သည် PHP 7.4 နှင့်အထက်တွင်ထည့်သွင်းထားသောလုပ်ငန်းအသစ်တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
bool socket_clear_error ( resource $socket [, int &$errno [, string &$errstr ]] )
$ socket : မှားယွင်းသော socket အရင်းအမြစ်ကိုသန့်ရှင်းရေးလုပ်ရန်။
$ errno : output parameter, သန့်ရှင်းရေးကာလအတွင်းကြုံတွေ့ခဲ့ရသောအမှားကုဒ်ကိုပြန်သွားပါ။
$ ERRESSS : output parameter, ပြန်အမှားဖော်ပြချက်သတင်းအချက်အလက်။
ဤလုပ်ဆောင်ချက်ကိုခေါ်ပြီးနောက်အမှား stacking ကိုရှောင်ရှားရန်လက်ရှိ Socket ၏အမှားအယွင်းကိုရှင်းလင်းလိမ့်မည်။
အောက်ဖော်ပြပါအချက်များသည် Socket Data ကိုဖတ်ရှုပြီးနောက်အမှားအယွင်းများကိုပုံမှန်မည်သို့သန့်ရှင်းရေးလုပ်ရမည်ကိုပြသသည့်ရိုးရှင်းသောအသုံးပြုမှုဥပမာတစ်ခုရှိသည်။
<?php
// a TCP Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// ဆာဗာကိုဆက်သွယ်ပါ(ဒီမှာဒိုမိန်းအမည် m66.net ရေှးယူနိုင်ခြင်း)
$connected = socket_connect($socket, "m66.net", 80);
if (!$connected) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . socket_strerror(socket_last_error($socket)) . "\n";
socket_clear_error($socket);
exit;
}
// တောင်းဆိုမှုကိုဒေတာပို့ပါ
$request = "GET / HTTP/1.1\r\nHost: m66.net\r\nConnection: close\r\n\r\n";
socket_write($socket, $request, strlen($request));
// တုံ့ပြန်မှုဒေတာကိုဖတ်ပါ
while ($data = socket_read($socket, 2048)) {
echo $data;
}
// သန့်ရှင်းရေးအမှားများကိုအချိန်,အမှား stacking တားဆီး
if (!socket_clear_error($socket, $errno, $errstr)) {
echo "Cleanup အမှားပျက်ကွက်,အမှားကုဒ်:$errno,အမှားသတင်းစကား:$errstr\n";
} else {
echo "Socket အမှားရှင်းလင်း\n";
}
socket_close($socket);
?>
ဤဥပမာတွင် connection နှင့် data ထုတ်လွှင့်မှုနှစ်ခုလုံးသည် M66.net ကို ဒိုမိန်းအမည်အဖြစ်အသုံးပြုသည်။ ဒေတာများကိုဖတ်ပြီးနောက်အမှားအယွင်းများအားလုံးကိုသန့်ရှင်းရေးလုပ်ရန်နှင့်နောက်ဆက်တွဲစစ်ဆင်ရေးများ၏သက်ရောက်မှုကိုရှောင်ရှားရန် socket_clear_Error ကို ကျွန်ုပ်တို့ခေါ်ဆိုသည်။
ရှည်လျားသောဆက်သွယ်မှုသို့မဟုတ် loop ဆက်သွယ်ရေးအခြေအနေများတွင်အမှားအယွင်းများကိုအဆက်မပြတ်ထုတ်လုပ်သည်။ မသန့်ရှင်းပါကအမှားအယွင်းများသည်နောက်ဆုံးတွင်ဖြစ်ပေါ်လာနိုင်သည်။
စွမ်းဆောင်ရည်ပျက်စီးခြင်း
အစီအစဉ်ပျက်ကျခြင်း
အဆိုပါယုတ္တိဗေဒ, ဒူးကို debug ရန်ခက်ခဲယုတ္တိဗေဒ
Socket_clear_Error ကို ပုံမှန်ခေါ်ဆိုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အမှားအယွင်းများကိုစင်ကြယ်စွာထိန်းသိမ်းထားနိုင်ပြီးပရိုဂရမ်ကိုတည်ငြိမ်စေသည်။
Socket ကိုအသုံးပြုသောအခါအမှားအယွင်းများသည်ဆက်လက်စုဆောင်းနေမည်ဖြစ်ပြီး၎င်းသည်အမှားအယွင်းများကိုအလွယ်တကူဖြစ်ပေါ်စေနိုင်သည်။
PHP သည် Socket_clear_Error function ကိုထောက်ပံ့ပေးသည်။
အမှားအယွင်းများကိုအချိန်မီသန့်ရှင်းရေးပြုလုပ်ခြင်းသည်ပရိုဂရမ်ပျက်ကျမှုနှင့်စွမ်းဆောင်ရည်ပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။
ကွန်ယက်ဆက်သွယ်ရေးကုဒ်တွင်အမှားတန်းစီရှင်းလင်းရန်သေချာစေရန်သင့်တော်သောအချိန်၌ဤလုပ်ဆောင်မှုကိုသင့်လျော်သောအချိန်၌ခေါ်ဆိုရန်အကြံပြုသည်။
ဤဆောင်းပါးသည်သင့်အား socket အမှားများကိုပိုမိုကောင်းမွန်စွာစီမံရန်နှင့် PHP ကွန်ယက်အစီအစဉ်များ၏တည်ငြိမ်မှုနှင့်ယုံကြည်စိတ်ချရမှုကိုတိုးတက်စေရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။