နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်တခါတရံဝေးလံခေါင်သီသောဆာဗာတစ်ခု၏သီးခြားဆိပ်ကမ်းကိုဖွင့်ရန်လိုသည်, fsocckopen () သည် Socket Connections ကိုတည်ဆောက်ရန်အတွက် PHP မှပေးသောဇာတိ function ကိုအသုံးပြုနိုင်သောဇာတိ function ကို အသုံးပြု. ရိုးရှင်းသောဆိပ်ကမ်းစုံစမ်းစစ်ဆေးမှုအတွက်အသုံးပြုရန်ခွင့်ပြုသည်။
ဤဆောင်းပါးသည် FSOCCKOPEN () function ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးနိုင်သည်။
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): ဆက်သွယ်မှုအချိန်ကုန်များ (စက္ကန့်) ။
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} ပွင့်လင်းသို့မဟုတ်လက်လှမ်းမမှီပါဘူး。";
}
ပစ်မှတ်အိမ်ရှင်နှင့် port နံပါတ်များကိုသတ်မှတ်ပါ Gitbox.net နှင့် 443 စသည့်ဆာဗာလိပ်စာနှင့်ဆိပ်ကမ်းကိုဆုံးဖြတ်ရန်။
fsocckopen ကို သုံး. ဆက်သွယ်ရန်ကြိုးစားခြင်း @fsocopen () ကို သုံးပါ။ default error output output ကိုဖိနှိပ်ရန်နှင့်ဆက်သွယ်မှုသည်ပြန်လည်ထူထောင်ရေးတန်ဖိုးဖြင့်အောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန်။
ဆက်သွယ်မှုရလဒ်များကိုထုတ်ယူခြင်း
အောင်မြင်မှု - Port ကိုဖွင့်လို့ရတယ်။
မအောင်မြင်ပါ - server firewall သို့မဟုတ် port သည် server firewall သို့မဟုတ် port ကိုမဖွင့်နိုင်ကြောင်းဖော်ပြသည်။
ဆက်သွယ်မှုအရင်းအမြစ်ကိုပိတ်ပါ အကယ်. ဆက်သွယ်မှုအောင်မြင်မှုရှိပါကအရင်းအမြစ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်ဆက်သွယ်မှုအရင်းအမြစ်ကိုပိတ်ရန် FCLOESE () ကို အသုံးပြုသင့်သည်။
0 က်ဘ်ဆိုက်စောင့်ကြည့်ရေးစနစ်တွင် 0 န်ဆောင်မှုဆိပ်ကမ်းသည်ပုံမှန်ဖြစ်မနေစစ်ဆေးပါ။
အလိုအလျောက်ဖြန့်ကျက်မှုကိရိယာတွင်ပစ်မှတ် 0 န်ဆောင်မှုသည်အဆင်သင့်ဖြစ်ကြောင်းအတည်ပြုပါ။
ဒေသဖွံ့ဖြိုးရေးနှင့် debugging စဉ်အတွင်း port accessibility ကိုလျင်မြန်စွာစစ်ဆေးပါ။
port detection function ကိုလည်ပတ်ခြင်းနှင့်ပြုပြင်ထိန်းသိမ်းမှုကိရိယာများတွင်ပေါင်းစပ်ပါ။
FSOCOPEN () သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်း port ရှာဖွေရေးအခြေအနေများအတွက်မသင့်တော်ပါ။
အချို့သောဆာဗာ configurations များတွင်လုံခြုံရေးမူဝါဒများကြောင့်ဤလုပ်ဆောင်မှုကိုတားမြစ်နိုင်သည်။
@ အမှား output ကိုဖိနှိပ်ရန် @ ကိုအသုံးပြုသောအခါသင်သည်ခြွင်းချက်များကိုကောင်းစွာကိုင်တွယ်ရန်သေချာအောင်လုပ်ပါ။
ရှာဖွေတွေ့ရှိထားသောဆာဗာကို IP Whitelists, Firewalls စသည်ဖြင့်ပြုပြင်နိုင်ပြီး၎င်းသည်ရှာဖွေတွေ့ရှိမှုရလဒ်များကိုအကျိုးသက်ရောက်စေလိမ့်မည်။