လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP Network Communicen Handling: အမှားအယွင်းများနှင့်အတူကြော့ရှင်းစွာကိုင်တွယ်ဖြေရှင်းရန်

PHP Network Communicen Handling: အမှားအယွင်းများနှင့်အတူကြော့ရှင်းစွာကိုင်တွယ်ဖြေရှင်းရန်

gitbox 2025-06-15

1 ။ ကွန်ယက်ခြွင်းချက်များကိုနားလည်ပါ

ကွန်ယက်များကိုဆက်သွယ်သည့်အခါလျှောက်လွှာများသည်ဘုံကွန်ယက်ခြွင်းချက်အချို့ကိုကြုံတွေ့ရနိုင်သည်။

  • connection timeout : သတ်မှတ်ထားသောအချိန်အတွင်းဆာဗာနှင့်ဆက်သွယ်မှုကိုမတည်ဆောက်နိုင်ပါ။
  • ဒေတာထုတ်လွှင့်ခြွင်းချက် - ဒေတာထုတ်လွှင့်ခြွင်းချက် - အချက်အလက်များအားထုတ်လွှင့်ခြင်းသို့မဟုတ်ထုတ်လွှင့်စဉ်အတွင်းပျက်စီးယိုယွင်းခြင်း,
  • Network disconnect : ကွန်ယက်ချိတ်ဆက်မှုသည်ရုတ်တရက်အဆက်ပြတ်နေပြီးအချက်အလက်များကိုပုံမှန်အားဖြင့်ကူးစက်နိုင်ရန်မဖြစ်နိုင်ပါ။

ဤပြ problems နာများသည်ပရိုဂရမ်၏ပုံမှန်လည်ပတ်မှုကိုအကျိုးသက်ရောက်စေနိုင်သည်။

2 ။ ကွန်ယက်ခြွင်းချက်များကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

ကွန်ယက်ဆက်သွယ်ရေးတွင်ခြွင်းချက်များကိုကိုင်တွယ်ရန် PHP သည်နည်းလမ်းများစွာကိုထောက်ပံ့ပေးသည်။ အောက်တွင်ကျွန်ုပ်တို့သည်ဤခြွင်းချက်များကိုစီးဆင်းမှုထိန်းချုပ်မှုလုပ်ငန်းများနှင့်အမှားထိန်းချုပ်နိုင်သောအော်ပရေတာများဖြင့်မည်သို့ထိထိရောက်ရောက်စီမံခန့်ခွဲရမည်ကိုလေ့လာလိမ့်မည်။

2.1 စီးဆင်းမှုထိန်းချုပ်ရေးလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်း

PHP ၏စီးဆင်းမှုထိန်းချုပ်မှု function ( stream_set_seout_timeout)) (ဥပမာ stream_set_timeout) ) သည် connection turnout ကြောင့်အစီအစဉ်တင်ဆက်မှုကိုရှောင်ရှားရန် The Stream ၏အချိန်ကုန်ကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။

Stream_socide _client () tcp connection ကိုတည်ဆောက်ရန်နှင့် Steam_set_timeout () မှတစ်ဆင့်အချိန်ကုန်ကိုသတ်မှတ်ရန်အသုံးပြုသောနမူနာကုဒ်ဖြစ်သည်။

 $stream = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 5);
if ($stream === false) {
    echo 'Network ခြွင်းချက်:', $errstr, ' (', $errno, ')';
} else {
    stream_set_timeout($stream, 5);  // အချိန်ကိုသတ်မှတ်ပါ5စက်ဏန့်
    fwrite($stream, "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n");
    $response = stream_get_contents($stream);
    $meta = stream_get_meta_data($stream);
    
    if ($meta['timed_out']) {
        echo 'Network ခြွင်းချက်:ဆက်သွယ်မှုအချိန်ကုန်';
    } else {
        echo 'တုံ့ပြန်မှုစာ:', $response;
    }
    fclose($stream);
}

ဒီဥပမာမှာ TCP connection ကို stream_socket_client () မှတဆင့်ပထမ ဦး ဆုံးဖန်တီးပြီး 5 စက္ကန့်အထိအချိန်ကုန်ကန့်သတ်ချက်ကိုသတ်မှတ်ထားပါ။ ထို့နောက်ကျွန်ုပ်တို့သည် HTTP တောင်းဆိုမှုကိုပေးပို့ပြီးတုံ့ပြန်မှုကိုလက်ခံရရှိသည်။ အချိန်ကုန်ပြီးဆုံးခြင်းရှိမရှိကိုဆုံးဖြတ်သည့်အခါကျွန်ုပ်တို့သည် stream_get_meta_data () ကိုအသုံးပြုသည်။

2.2 အမှားထိန်းချုပ်နိုင်သောအော်ပရေတာများကိုအသုံးပြုခြင်း

ကွန်ယက်ချွင်းချက်များကိုကိုင်တွယ်ရန်အခြားနည်းလမ်းမှာ PHP ၏အမှားထိန်းချုပ်မှုအော် ရေတာကိုအသုံးပြုရန်ဖြစ်သည်။ ဤအော်ပရေတာမှတစ်ဆင့် developer များကကွန်ရက်ခြွင်းချက်အချို့ကိုလျစ်လျူရှုထားပြီးအမှားအယွင်းများကိုကိုင်တွယ်နိုင်သည်။

အောက်ပါကုဒ်သည်ဖြစ်နိုင်ချေရှိသောခြွင်းချက်များကိုကိုင်တွယ်ရန် @ @ operator ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည်။

 $stream = @stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 5);
if ($stream === false) {
    echo 'Network ခြွင်းချက်:', $errstr, ' (', $errno, ')';
} else {
    fwrite($stream, "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n");
    $response = @stream_get_contents($stream);
    
    if (empty($response)) {
        echo 'Network ခြွင်းချက်:', error_get_last()['message'];
    } else {
        echo 'တုံ့ပြန်မှုစာ:', $response;
    }
    fclose($stream);
}

ဤကုဒ်တွင် @ operator သည် stream_socient_cletient () stream_get_contents () ကြောင့်ဖြစ်ရတဲ့ဖြစ်နိုင်ချေအမှားများကိုလျစ်လျူရှုဖို့အသုံးပြုသည်။ အကယ်. $ တုန့်ပြန်မှုသည် အချည်းနှီးဖြစ်လျှင်၎င်းသည် Network တွင်ချွင်းချက်တစ်ခုဖြစ်ပွားခဲ့ပြီး Error_get_last မှတဆင့်အမှားမက်ဆေ့ခ်ျကိုရရှိသည်။

3 ။ ခြွင်းချက်ကိုင်တွယ်ဘို့ကြိုတင်ကာကွယ်မှုများ

ကွန်ယက်ခြွင်းချက်များကိုကိုင်တွယ်သောအခါ developer များကအောက်ပါအချက်များကိုအထူးဂရုပြုရန်လိုအပ်သည်။

  • ချိန်ခွင်ကိုကိုင်တွယ်ရန် set_te_timit () နှင့်အခြားလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းကိုရှောင်ကြဉ်ပါ
  • အသေးစိတ်အမှားအချက်အလက်များကိုရယူရန်အမှားအယွင်းများကိုအသုံးပြုရန် အမှားအယွင်းများကို အသုံးပြုပါ
  • stream_set_set_set_blocking () conjunction () conjunction () ကိုသုံးပါ။ စမ်းချောင်း၏ပိတ်ဆို့ခြင်း mode ကိုသတ်မှတ်ရန် - Stream ၏ပိတ်ဆို့ခြင်း mode ကို သတ်မှတ်ရန် - Stream သည်သင့်လျော်သောပြည်နယ်တွင်အလုပ်လုပ်ပြီးပိတ်ဆို့ခြင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းမရှိခြင်းကြောင့်ပြ problems နာများကိုရှောင်ပါ။

4 ။ နိဂုံးချုပ်

ကွန်ယက်ဆက်သွယ်ရေးခြွင်းချက်များသည်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဘုံပြ problems နာများဖြစ်သည်။ စီးဆင်းမှုထိန်းချုပ်ရေးလုပ်ငန်းဆောင်တာများနှင့်အမှားထိန်းချုပ်နိုင်သောအော်ပရေတာများကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကွန်ရက်ချွင်းချက်များကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် developer များသည်တိကျသောဇာတ်လမ်းအရသင့်လျော်သောလုပ်ဆောင်မှုနည်းလမ်းကိုရွေးချယ်ရန်နှင့်အစီအစဉ်၏တည်ငြိမ်မှုကိုသေချာစေရန်အသေးစိတ်အချက်အလက်များကိုဂရုပြုရန်လိုအပ်သည်။