လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Close_ERRORERRORER () socket_read () မအောင်မြင်ပါ

Socket_Close_ERRORERRORER () socket_read () မအောင်မြင်ပါ

M66 2025-05-27

PHP ၏ Socket_read () တွင်ပရိုဂရမ်းမင်းသည် PHPP ၏ socket များထံမှအချက်အလက်များကိုဖတ်ရှုသည့်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်အမှန်တကယ် applications များအနေဖြင့် Socket_read () သည် ကွန်ယက်အခြေအနေများသို့မဟုတ်ဆက်သွယ်မှုပြ problems နာများကြောင့်ကျရှုံးနိုင်သည်။ ပရိုဂရမ်၏တည်ငြိမ်မှုနှင့်ကြံ့ခိုင်မှုကိုသေချာစေရန်အတွက်ကျွန်ုပ်တို့သည်အမှားများကိုအချိန်တိုအတွင်းရှင်းလင်းရန်နှင့်စာဖတ်ခြင်းပျက်ကွက်ပြီးနောက်ထပ်မံကြိုးစားရန်လိုအပ်သည်။ ယခုအချိန်တွင် Socket_Close_Error () function သည်အသုံးဝင်သည်။

ဤဆောင်းပါးသည် Socket_read () နှင့် socket_clear_error () ကို မည်သို့ကိုင်တွယ်ဖြေရှင်းရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ Socket_read ကိုခေတ္တပြန်လည်သုံးသပ်ခြင်း ()

Socket_read () ကို ချိတ်ဆက်ထားသော socket မှအချက်အလက်များကို syntax မှအောက်ပါအတိုင်းဖတ်ရန်အသုံးပြုသည်။

 socket_read(resource $socket, int $length, int $type = PHP_BINARY_READ): string|false
  • $ socket : socket အရင်းအမြစ်။

  • $ အရှည် : ဖတ်ရန် bytes အများဆုံးအရေအတွက်။

  • $ type : ဖတ်အမျိုးအစား, binary ဖတ်ရန် default ။

ဖတ်ရန်အောင်မြင်လျှင်ဖတ်ပါ။ အကယ်. ၎င်းသည်မအောင်မြင်ပါက မှား လိမ့်မည်။

2 ။ အဘယ်ကြောင့် socket_clear_Error () ကို သင်ဘာကြောင့်သုံးရန်လိုအပ်သနည်း။

Socket_read () မအောင်မြင်ပါက, နောက်ဆက်တွဲစစ်ဆင်ရေးကိုအကျိုးသက်ရောက်စေနိုင်သောအမှားအယွင်းတစ်ခုကျန်ရှိနေသေးသည်။ ဥပမာအားဖြင့် Socket_last_Error () သည် နောက်ဆုံးအမှားကုဒ်ကိုပြန်ပို့လိမ့်မည်။ အကယ်. အမှားအယွင်းကိုမရှင်းလင်းပါကပရိုဂရမ်သည်အမှားအယွင်းရှိနိုင်ပြီးထပ်ခါတလဲလဲပျက်ကွက်မှုများဖြစ်ပေါ်စေသည်။

Socket_Close_Error () သည် socient error status ကိုရှင်းလင်းရန်နှင့်နောက်ဆက်တွဲစစ်ဆင်ရေးများကိုပုံမှန်ကွပ်မျက်နိုင်အောင်အသုံးပြုသည်။

3 ။ Socket_Close_Error () ကို ဘယ်လိုမှန်ကန်စွာသုံးနိုင်လဲ။

အောက်ဖော်ပြပါအချက်သည်အမှားကိုမည်သို့ ရှင်းလင်း ရမည် ,

 <?php
// ဖန်တီး socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}

// ဆာဗာကိုဆက်သွယ်ပါ(ဆာဗာလိပ်စာနှင့်ဆိပ်ကမ်းကိုယူဆပါ)
$server = "m66.net";
$port = 12345;
if (!socket_connect($socket, $server, $port)) {
    die("ဆာဗာကိုဆက်သွယ်ပါဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

$maxRetries = 3;  // ပြန်လည်ကြိုးစားမှုအများဆုံးအရေအတွက်
$retryCount = 0;
$readLength = 1024;

while ($retryCount < $maxRetries) {
    $data = socket_read($socket, $readLength);

    if ($data === false) {
        // 读取ဆုံးရှုံး,အမှားကုဒ်ကိုရယူပါ
        $errorCode = socket_last_error($socket);
        $errorMsg = socket_strerror($errorCode);
        echo "socket_read ဆုံးရှုံး,အမှားကုဒ်:$errorCode,အမှားသတင်းစကား:$errorMsg\n";

        // ရှင်းလင်းသောအမှား
        socket_clear_error($socket);
        echo "ရှင်းလင်းစေ socket အမှား,ထပ်ကြိုးစားရန်အဆင်သင့်...\n";

        $retryCount++;
        // မလုပ်မနေရမဟုတ်သော:ခဏအိပ်ပြီးနောက်ထပ်ကြိုးစားပါ,မကြာခဏတောင်းဆိုမှုများကိုရှောင်ကြဉ်ပါ
        sleep(1);
        continue;
    }

    // အောင်မြင်စွာဖတ်ပါ,output ကိုဒေတာနှင့်ကွင်းဆက်ထဲကခုန်
    echo "ဒေတာကိုဖတ်ပါ:" . $data . "\n";
    break;
}

if ($retryCount === $maxRetries) {
    echo "ပြန်လည်နေရာချထားမှုအရေအတွက်သည်အများဆုံးရောက်ရှိခဲ့သည်,读取ဆုံးရှုံး。\n";
}

// ရုပ်သိမ်းခြင်း socket
socket_close($socket);
?>

4 ။ ကုဒ်ခွဲခြမ်းစိတ်ဖြာခြင်း

  1. Socket သို့ ဖန်တီး. ချိတ်ဆက်ပါ ။ ဤနေရာတွင် M66.net ဆိပ်ကမ်းနှင့်ချိတ်ဆက်သည်။

  2. အချက်အလက်များကိုဖတ်ရန်ကြိုးစားခြင်း - 3 ယောက်ကိုဖတ်ရန်ကြိုးစားသည်။ 4 င်းတို့ကိုဖတ်ရန်ကြိုးစားသည်။

  3. ပျက်ကွက်ကိုင်တွယ် :

    • socket_last_Error မှတဆင့်အမှားကုဒ်ကိုရယူပါ။

    • အမှားဖော်ပြချက်ရရှိရန် Socket_Stror () ကို သုံးပါ။

    • အမှားအယွင်းကိုရှင်းလင်းရန် Socket_Clear_Error () ()

    • နောက်တဖန်မကြိုးစားမီတစ်စက္ကန့်ကိုစောင့်ပါ။

  4. အကယ်. အောင်မြင်စွာဖတ်ရှုနိုင်လျှင်ဒေတာများကိုပုံနှိပ်ထုတ်ဝေပါကကွင်းဆက်မှထွက်ပေါ်လာလိမ့်မည်

  5. ဆက်သွယ်မှုကိုပိတ်ပြီးအရင်းအမြစ်ကိုထုတ်လွှတ်ပါ

5 ။ အကျဉ်းချုပ်

Socket_read ကိုအသုံးပြုပြီးဒေတာကိုဖတ်ပြီး () ကို ရှင်းရှင်းလင်းလင်းဖတ်ရန်မလွယ်ကူပါကပျက်ကွက်မှုမရှိသည့်အခါအမှားကိုရှင်းလင်းရန်မမေ့ပါနှင့်။ ၎င်းသည်အမှားစုဆောင်းခြင်းကိုရှောင်ရှားနိုင်ပြီးနောက်စစ်ဆင်ရေး၏မှန်ကန်သောကွပ်မျက်မှုကိုသေချာစေသည်။ တစ်ချိန်တည်းမှာပင် Retry ယန္တရားနှင့်ပေါင်းစပ်ပြီးကွန်ယက်ဆက်သွယ်မှုတည်ငြိမ်မှုကိုတိုးတက်အောင်လုပ်နိုင်သည်။