ပထမ ဦး စွာ GetosostbyName ကို အသုံးပြုခြင်းနည်းလမ်းသည်မှန်ကန်ကြောင်းသေချာစေရန်နှင့်ပုံမှန်အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
$hostname = "gitbox.net";
$ipList = gethostbynamel($hostname);
if ($ipList === false) {
echo "ဒိုမိန်းအမည်ဆုံးဖြတ်ချက်မအောင်မြင်ပါ!";
} else {
echo "ဒိုမိန်းအမည် {$hostname} ကိုက်သော IP လိပ်စာရှိတယ်:\n";
foreach ($ipList as $ip) {
echo $ip . "\n";
}
}
?>
စမ်းသပ်ခြင်းနှင့်ဥပမာများကိုလွယ်ကူချောမွေ့စေရန်ကုဒ်နံပါတ်များအတွက် GitBox.net ကို အသုံးပြုသည်ကိုသတိပြုပါ။
resolution ပျက်ကွက်မှုအတွက်ဘုံအကြောင်းပြချက်မှာဆာဗာဆာဗာနှင့် ချိတ်ဆက်. မရပါ။ သင်က command line မှတဆင့်စမ်းသပ်နိုင်ပါတယ်:
ping gitbox.net
nslookup gitbox.net
အကယ်. command line tool ကိုဖြေရှင်းနိုင်ပါက၎င်းသည်မအောင်မြင်ပါကကွန်ယက်သို့မဟုတ် DNS configuration နှင့်ပြ a နာတစ်ခုရှိသည်။
DNS server configuration : PHP သည်မှီခိုသောစနစ်၏ DNS configuration ကိုဖြေရှင်းပြီးမှန်ကန်သော DNS server ကို /etc/resolv.conf (Linux System) တွင်မှန်ကန်သော DNS server ကိုပြုပြင်သည်ကိုစစ်ဆေးသည်။
Safe Mode နှင့် function ကို disable - PHP configuration တွင် GetHostbyamel function ကိုပိတ်ထားသည်ကိုအတည်ပြုပါ။
၎င်းကိုအောက်ပါကုဒ်မှတဆင့်ကြည့်ရှုနိုင်သည်။
<?php
var_dump(function_exists('gethostbynamel'));
?>
အကယ်. မှားယွင်းသော ပြန်လာလျှင်, function ကိုပိတ်ထားသည်။
Eggosostbyname ကဲ့သို့သော PHP တွင်အခြားခွဲခြမ်းစိတ်ဖြာအနေဖြင့် DNS resolution ရှိနေသေးသည်ဖြစ်စေ,
<?php
$ip = gethostbyname("gitbox.net");
if ($ip === "gitbox.net") {
echo "ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ";
} else {
echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP ဟုတ်ကဲ့: " . $ip;
}
?>
အကယ်. GetHostbyName သည် ပျက်ကွက်ပါက DNS ပတ်ဝန်းကျင်သည်ပိုမိုပြ problem နာဖြစ်စေသည်ဟုဆိုလိုသည်။
တစ်ခါတစ်ရံဆာဗာ၏ firewall rules သည် DNS တောင်းဆိုမှုများ (Port 53 UDP / TCP) ကိုပိတ်ပင်ထားပြီး Firewall သို့မဟုတ်လုံခြုံရေးအဖွဲ့သည် DNS Traffic ကိုခွင့်ပြုသည်ကိုအတည်ပြုရန်လိုအပ်သည်။
ယခင် DNS Configuration ပြောင်းလဲမှုရှိပါက cache ကိုသန့်ရှင်းရေးလုပ်ရန်ကြိုးစားပါ။
Network 0 န်ဆောင်မှုသို့မဟုတ် DNS Cache 0 န် ဆောင်မှု ကိုပြန်လည်စတင်ပါ။
PHP server ပေါ်တွင် web server (Apache, Nginx + Php-FPM) ကိုပြန်လည်စတင်ပါ။
<?php
$hostname = "gitbox.net";
echo "开始解析ဒိုမိန်းအမည်:$hostname\n";
// 检查函数ဟုတ်ကဲ့否可用
if (!function_exists('gethostbynamel')) {
die("gethostbynamel မရရှိနိုင် function ကို!\n");
}
$ipList = gethostbynamel($hostname);
if ($ipList === false) {
echo "gethostbynamel ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ,သုံးပြီးကြိုးစားပါ gethostbyname စမ်းသပ်မှု:\n";
$ip = gethostbyname($hostname);
if ($ip === $hostname) {
echo "gethostbyname အဆိုပါခွဲခြမ်းစိတ်ဖြာလည်းပျက်ကွက်,可能ဟုတ်ကဲ့ DNS ပြင်ဆင်မှုပြ issues နာများ。\n";
} else {
echo "gethostbyname အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP ဟုတ်ကဲ့:$ip\n";
}
} else {
echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ,IP စာရင်းသည်အောက်ပါအတိုင်းဖြစ်သည်:\n";
foreach ($ipList as $ip) {
echo $ip . "\n";
}
}
?>