လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဝေးလံခေါင်ဖျားသောဆာဗာဆိပ်ကမ်းဖွင့်သည်ကိုရှာဖွေရန် FSOCOPEN ကိုအသုံးပြုပါ

ဝေးလံခေါင်ဖျားသောဆာဗာဆိပ်ကမ်းဖွင့်သည်ကိုရှာဖွေရန် FSOCOPEN ကိုအသုံးပြုပါ

gitbox 2025-05-29

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်တခါတရံဝေးလံခေါင်သီသောဆာဗာတစ်ခု၏သီးခြားဆိပ်ကမ်းကိုဖွင့်ရန်လိုသည်, fsocckopen () သည် Socket Connections ကိုတည်ဆောက်ရန်အတွက် PHP မှပေးသောဇာတိ function ကိုအသုံးပြုနိုင်သောဇာတိ function ကို အသုံးပြု. ရိုးရှင်းသောဆိပ်ကမ်းစုံစမ်းစစ်ဆေးမှုအတွက်အသုံးပြုရန်ခွင့်ပြုသည်။

ဤဆောင်းပါးသည် FSOCCKOPEN () function ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးနိုင်သည်။


1 ။ fsocckopen () ကဘာလဲ

fsocckopen () သည် network connection သို့မဟုတ် unix socket connection ကိုဖွင့်ရန်အသုံးပြုသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 resource|false fsockopen(
    string $hostname,
    int $port,
    int &$error_code = null,
    string &$error_message = null,
    float $timeout = ini_get("default_socket_timeout")
)

parameter သည်ဖော်ပြချက်:

  • $ hostname : domain name or IP address ကိုဖြစ်စေနိုင်သောပစ်မှတ်အိမ်ရှင်။

  • $ port : ချိတ်ဆက်ရန် port နံပါတ်။

  • $ error_code (optional): connection မအောင်မြင်သည့်အခါအမှားကုဒ်။

  • $ error_message (optional): ဆက်သွယ်မှုပျက်ကွက်သည့်အခါအမှားသတင်း။

  • $ Timeout (optional): ဆက်သွယ်မှုအချိန်ကုန်များ (စက္ကန့်) ။


2 ။ ဆိပ်ကမ်းကိုဖွင့်သည်မရှိမရှိကိုရှာဖွေခြင်း၏အဓိကယုတ္တိဗေဒ

fsocckopen မှတဆင့်သတ်မှတ်ထားသောလိပ်စာဆိပ်ကမ်းသို့ချိတ်ဆက်ရန်ကြိုးစားသည်။ ဆက်သွယ်မှုသည်အောင်မြင်ပါကဆိပ်ကမ်းသည်ဖွင့်နေသည်ဟုကျွန်ုပ်တို့ထင်နိုင်သည်။ ဒီလိုမှမဟုတ်ရင်ဆိပ်ကမ်းကိုပိတ်ထားတာကိုပိတ်ထားတယ်,

နမူနာကုဒ်:

 <?php

function isPortOpen($host, $port, $timeout = 5)
{
    $errno = 0;
    $errstr = '';
    $connection = @fsockopen($host, $port, $errno, $errstr, $timeout);

    if (is_resource($connection)) {
        fclose($connection);
        return true;
    } else {
        return false;
    }
}

// နမူနာ:စမ်းသပ်မှု gitbox.net ၏ 443 ဆိပ်ကမ်းဖွင့်လား
$host = 'gitbox.net';
$port = 443;

if (isPortOpen($host, $port)) {
    echo "သငေ်္ဘာဆိပ်ကမ်း {$port} တည်နေ {$host} 上是开放၏。";
} else {
    echo "သငေ်္ဘာဆိပ်ကမ်း {$port} တည်နေ {$host} ပွင့်လင်းသို့မဟုတ်လက်လှမ်းမမှီပါဘူး。";
}

3 ။ စစ်ဆင်ရေးအဆင့်များအသေးစိတ်ရှင်းလင်းချက်

  1. ပစ်မှတ်အိမ်ရှင်နှင့် port နံပါတ်များကိုသတ်မှတ်ပါ Gitbox.net နှင့် 443 စသည့်ဆာဗာလိပ်စာနှင့်ဆိပ်ကမ်းကိုဆုံးဖြတ်ရန်။

  2. fsocckopen ကို သုံး. ဆက်သွယ်ရန်ကြိုးစားခြင်း @fsocopen () ကို သုံးပါ။ default error output output ကိုဖိနှိပ်ရန်နှင့်ဆက်သွယ်မှုသည်ပြန်လည်ထူထောင်ရေးတန်ဖိုးဖြင့်အောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန်။

  3. ဆက်သွယ်မှုရလဒ်များကိုထုတ်ယူခြင်း

    • အောင်မြင်မှု - Port ကိုဖွင့်လို့ရတယ်။

    • မအောင်မြင်ပါ - server firewall သို့မဟုတ် port သည် server firewall သို့မဟုတ် port ကိုမဖွင့်နိုင်ကြောင်းဖော်ပြသည်။

  4. ဆက်သွယ်မှုအရင်းအမြစ်ကိုပိတ်ပါ အကယ်. ဆက်သွယ်မှုအောင်မြင်မှုရှိပါကအရင်းအမြစ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်ဆက်သွယ်မှုအရင်းအမြစ်ကိုပိတ်ရန် FCLOESE () ကို အသုံးပြုသင့်သည်။


4 ။ သက်ဆိုင်သောအခြေအနေများ

  • 0 က်ဘ်ဆိုက်စောင့်ကြည့်ရေးစနစ်တွင် 0 န်ဆောင်မှုဆိပ်ကမ်းသည်ပုံမှန်ဖြစ်မနေစစ်ဆေးပါ။

  • အလိုအလျောက်ဖြန့်ကျက်မှုကိရိယာတွင်ပစ်မှတ် 0 န်ဆောင်မှုသည်အဆင်သင့်ဖြစ်ကြောင်းအတည်ပြုပါ။

  • ဒေသဖွံ့ဖြိုးရေးနှင့် debugging စဉ်အတွင်း port accessibility ကိုလျင်မြန်စွာစစ်ဆေးပါ။

  • port detection function ကိုလည်ပတ်ခြင်းနှင့်ပြုပြင်ထိန်းသိမ်းမှုကိရိယာများတွင်ပေါင်းစပ်ပါ။


5 ။ မှတ်စုဖို့အရာ

  • FSOCOPEN () သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်း port ရှာဖွေရေးအခြေအနေများအတွက်မသင့်တော်ပါ။

  • အချို့သောဆာဗာ configurations များတွင်လုံခြုံရေးမူဝါဒများကြောင့်ဤလုပ်ဆောင်မှုကိုတားမြစ်နိုင်သည်။

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

  • ရှာဖွေတွေ့ရှိထားသောဆာဗာကို IP Whitelists, Firewalls စသည်ဖြင့်ပြုပြင်နိုင်ပြီး၎င်းသည်ရှာဖွေတွေ့ရှိမှုရလဒ်များကိုအကျိုးသက်ရောက်စေလိမ့်မည်။