ကွန်ယက်ပရိုဂရမ်အတွက် PHPP ၏ Socket extension ကိုအသုံးပြုသောအခါဆက်သွယ်မှုများပေးပို့ခြင်း, အချက်အလက်များပေးပို့ရန်, အချက်အလက်များပေးပို့ရန် , အချက်အလက်များ ပေးပို့ခြင်း , ဤသည်စံအမှားကိုင်တွယ်ဖြစ်စဉ်ကိုဖြစ်ပါတယ်။
သို့သော် developer များစွာသည်အမှားကုဒ်ကိုရယူပြီးနောက် အမှားအယွင်းကိုရှင်းလင်းရန် Socket_Close_Error () ကို ရှင်းရန်မေ့နေကြသည် ။ ၎င်းသည်ထောင်ချောက်ကိုလျစ်လျူရှုရန်အလွန်လွယ်ကူသည်, သို့သော်သင်အမှားများကိုဖြေရှင်းရန်ခက်ခဲစေနိုင်သည်။ ဤဆောင်းပါးသည်အဘယ်ကြောင့် socket_clear_Error () အမှားကုဒ်ကိုမှတ်တမ်းတင်ပြီးနောက်ချက်ချင်းပင်အဘယ်ကြောင့်ခေါ်ဆိုသင့်သည်။
PHP ၏ Socket ATI, Socket_last_Error () သည်လက်ရှိ socket ၏ နောက်ဆုံးပေါ်အမှားအယွင်းကို ပြန်လည်ရောက်ရှိစေပြီးဤအမှားကုဒ်ကိုသင်ရရှိပြီးနောက်ဤအမှားကုဒ်ကိုအလိုအလျောက်ရှင်းလင်းမည်မဟုတ်ပါ။ အကယ်. သင်သည် socket_clear_Error () အမှားကုဒ်ကိုရယူပြီးနောက်တွင် Socket_last_Error () ကိုနောက်တစ်ခေါက်အဆင်သင့်သောအမှားကုဒ်ကိုပြန်လည်ရောက်ရှိမည်ဆိုလျှင်ယခင်အမှားကုဒ်ကိုပြန်လည်ရောက်ရှိမည်ဖြစ်သည်။
ဤအပြုအမူသည်သင်၏အစီအစဉ်တွင်ယုတ္တိအမှားများကိုဖြစ်ပေါ်စေသည်။ ဥပမာအားဖြင့်:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
$error = socket_last_error();
echo "ဖန်တီးမှုပျက်ကွက်: " . socket_strerror($error);
// ခေါ်ဆိုရန်မေ့လျော့ socket_clear_error()
}
// အချို့သောကိစ္စရပ်များတွင်သင်သည်အခြားတစ်ခုဟုခေါ်ကြသည် socket လုပ်ဆောင်ချက်:
$result = socket_connect($socket, 'm66.net', 80);
if (!$result) {
$error = socket_last_error();
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . socket_strerror($error); // ဤသည်နောက်ဆုံးအမှားကုဒ်ဖြစ်နိုင်သည်
}
ဤအချိန်တွင် Socket_Connect () မအောင်မြင်ဟုမှားယွင်းစွာထင်ကောင်းထင်လိမ့်မည်။ အမှန်မှာ၎င်းသည်အောင်မြင်နိုင်သော်လည်းအမှားကုဒ်ကိုသင်မရှင်းလင်းသောကြောင့်သင်သည်ပြည်နယ်ဟောင်းကိုဖတ်နေသည်။
ချို့ယွင်းချက်သည်ပြ problems နာများကိုဖြေရှင်းရန်အတွက်အရေးကြီးသောသဲလွန်စတစ်ခုဖြစ်သည်။ အကယ်. သင်သည်အချို့သောကျရှုံးမှုပြုလုပ်ပြီးနောက်အမှားအယွင်းတစ်ခုပြုလုပ်ပြီးနောက်အမှားအယွင်းများကိုရှင်းလင်းရန်မေ့သွားရန်မေ့နေလျှင် societ_last_error () သည်လုံးဝမသက်ဆိုင်သောအမှားကုဒ်ကို သင်ရနိုင်သည်။ ၎င်းသည်သင်၏တရားစီရင်ခြင်းကိုအထူးသဖြင့်ရှုပ်ထွေးသောကွန်ယက်ယုတ္တိဗေဒတွင်အလေးအနက် 0 င်ရောက်စွက်ဖက်လိမ့်မည်။
ဥပမာအားဖြင့်:
// နောက်ဆုံးအကြိမ် socket_read() အချိန်ကုန်သည်အမှားကုဒ်တစ်ခုဖြစ်စေခဲ့သည်
$data = socket_read($socket, 1024);
if ($data === false) {
$error = socket_last_error();
log_error("ဖတ်ရန်မအောင်မြင်ပါ: " . socket_strerror($error));
// ဒီမှာရှင်းဖို့မေ့လျော့
}
// ထိုအခါသင်သည်အခြားနေရာ၌အသစ်တစ်ခုတောင်းဆိုမှု process
$send = socket_write($socket, "GET / HTTP/1.1\r\nHost: m66.net\r\n\r\n");
if ($send === false) {
$error = socket_last_error(); // ဒီနေရာမှာငါဖတ်တာကတကယ်တော့အရင်အမှားပဲ
log_error("ပေးပို့ခြင်းမအောင်မြင်ပါ: " . socket_strerror($error));
}
ဤကိစ္စတွင် Socket_write () သည် မအောင်မြင်ဟုမှားယွင်းစွာထင်ကောင်းထင်လိမ့်မည်။
အကောင်းဆုံးအလေ့အကျင့်မှာ - အမှားကုဒ်ကိုရရန် socket_last_Error () ကိုခေါ်ယူရန်အတွက်အချိန်ကြာမြင့်စွာမှာပင်အမှားကုဒ်ကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်ပြုပြင်ပြီးနောက်ချက်ချင်းပင် socket_clear_Error () ကို ခေါ်သင့်သည် ။ ဤသည်သင်၏နောက်ဆက်တွဲ socket operations များသည်ညစ်ညမ်းမှုမဟုတ်ကြောင်းသေချာစေပြီးသင်ရရှိသောအမှားတိုင်းကိုလက်ရှိစစ်ဆင်ရေးမှထုတ်ပေးသည်ကိုလည်းသေချာစေသည်။
နမူနာကုဒ်:
if (!$socket) {
$error = socket_last_error();
log_error("ဖန်တီးမှုပျက်ကွက်: " . socket_strerror($error));
socket_clear_error(); // ချက်ချင်းအမှားအယွင်းကိုရှင်းလင်းပါ
}
သို့မဟုတ်သင်အထွေထွေအမှားကိုင်တွယ် function ကို oncapsult နိုင်ပါတယ်:
function handle_socket_error($context = '') {
$error = socket_last_error();
$message = socket_strerror($error);
socket_clear_error();
error_log("[$context] Socket အမှား: $message ($error)");
}
Socket_last_Error () သည်အသုံးဝင်သော debugging tool တစ်ခုဖြစ်သည်။ ဤနည်းဥပဒေကိုသတိရပါ။ အမှားကုဒ်ကိုရယူပြီးချက်ချင်းရှင်းပါ။
သင်၏ပရိုဂရမ်ယုတ္တိဗေဒဆိုင်ရာယုတ္တိဗေဒသည်ကိုက်ညီမှုမရှိသောကြောင့် Debugging သည်အဆုံးတွင်မစောင့်ပါနှင့်။
သန့်ရှင်းရေးလုပ်သောအလုပ်သည်သေးငယ်သော်လည်းပရော်ဖက်ရှင်နယ် developer များနှင့်သတိမရှိသောစီမံကိန်းများအကြားအရေးကြီးသောခြားနားချက်ဖြစ်သည်။