PHP Network Programming တွင် GetHostbyName () သည်သက်ဆိုင်ရာ IPv4 လိပ်စာသို့ hostname ကိုဖြေရှင်းသည့်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ အသုံးပြုမှုနည်းလမ်းသည်အလွန်ရိုးရှင်းသော်လည်းအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်မှားယွင်းသောအမှားအယွင်းများသည် DNS settings များ, ကွန်ရက်ပြ problems နာများသို့မဟုတ်မလျော်ကန်သောပတ်ဝန်းကျင်ပြင်ဆင်မှုများကြောင့်ဖြစ်ပေါ်လေ့ရှိသည်။ ဤဆောင်းပါးသည် GethostbyName () ၏ သာမန်အမှားအယွင်းများကိုခွဲထုတ်ပြီးလက်တွေ့ပြ ubl နာဖြေရှင်းခြင်းနှင့်ဖြေရှင်းနည်းများကိုထုတ်ပေးလိမ့်မည်။
<?php
$ip = gethostbyname('www.gitbox.net');
echo $ip;
?>
ဤလုပ်ဆောင်ချက်သည် hostname parameter ကိုလက်ခံရရှိပြီးသက်ဆိုင်ရာ IPv4 လိပ်စာ string ကိုပြန်လည်ရရှိခဲ့သည်။ ခွဲခြမ်းစိတ်ဖြာခြင်းပျက်ကွက်လျှင်မူရင်း hostname ကိုပြန်ပို့သည်။
၎င်းသည်အသုံးအများဆုံးအမှားဖြစ်သည်။ များသောအားဖြင့် DNS resolution ပျက်ကွက်ခြင်း
<?php
$host = 'www.gitbox.net';
$ip = gethostbyname($host);
if ($ip === $host) {
echo "DNS ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: $host";
} else {
echo "IP လိပ်စာက: $ip";
}
?>
Troubleshooting နည်းလမ်း:
Domain Name ကိုမှန်ကန်စွာစာလုံးပေါင်းရှိမရှိအတည်ပြုပါ ။
Domain Name ကိုဒေသအလိုက်ဖြေရှင်းနိုင်မလားဆိုတာကိုကြည့်ရှုရန် Ping သို့မဟုတ် NSOlololookup tool ကိုသုံးပါ ။
အထူးသဖြင့်ကွန်တိန်နာသို့မဟုတ် CLI ပတ် 0 န်းကျင်တွင်ဆာဗာကိုမှန်ကန်သော DNS server ဖြင့် configure လုပ်ထားကြောင်းစစ်ဆေးပါ။
အချို့သောဆာဗာ configurations များသည် ExcohostbyName () ကို ဖြေရှင်းရန်ပျက်ကွက်စေသည့်ပြင်ပကွန်ယက်ဆက်သွယ်မှုကိုကန့်သတ်ထားသည်။
ဖြေရှင်းချက် -
PHP လည်ပတ်နေသည့်ပတ်ဝန်းကျင်၏ကွန်ယက်ဖွဲ့စည်းမှုကိုစစ်ဆေးပါ။
ဆာဗာသည် 8.8.8.8.8 ကဲ့သို့သောအများပြည်သူ dns များကို 0 င်ရောက်နိုင်ရန်သေချာပါစေ။
DNS cacheating ပြ issues နာများသည် resolution အမှားများကိုဖြစ်စေနိုင်သည်။
ဖြေရှင်းချက် -
DNS cache ကိုရှင်းလင်းရန် PHP-FPM သို့မဟုတ်ဝက်ဘ်ဆာဗာကိုပြန်လည်စတင်ပါ။
ဒိုမိန်းအမည်ကို Mapping Tests အတွက်ကိုယ်တိုင် Set / Enc / Hosts ကို ကြိုးစားပါ။
echo "93.184.216.34 www.gitbox.net" >> /etc/hosts
$ip = gethostbyname('localhost');
ဤ hostname အမျိုးအစားကိုမတူညီသော operating systems များအပေါ်ကွဲပြားစွာခွဲထားနိုင်သည် (ဥပမာ, တစ်ခါတစ်ရံ IPv6 ကိုဖြေရှင်းရန်) resolution ကို ဦး စားပေးစစ်ဆေးရန်သတိထားပါ။
အကယ်. သင်သည် IP လိပ်စာများကိုရလိုပါက GetHostbyamel ကို သုံးနိုင်သည်။
<?php
$ips = gethostbynamel('www.gitbox.net');
if ($ips === false) {
echo "ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ";
} else {
print_r($ips);
}
?>
ဤလုပ်ဆောင်ချက်သည် Node အဆက်အသွယ်များမလိုအပ်သည့်အခြေအနေများအတွက်သင့်လျော်သော IP address များစာရင်းကိုပြန်ပို့သည်။
GethostbyName () , ခြွင်းချက်ကိုင်တွယ်ခြင်းနှင့်သစ်ထုတ်လုပ်ခြင်းကို adapcapsulate လုပ်ရန်အကြံပြုသည်။
<?php
function resolveHost($host) {
$ip = gethostbyname($host);
if ($ip === $host) {
error_log("DNS ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: $host");
throw new Exception("DNS resolution failed for $host");
}
return $ip;
}
?>
GetHostbyName () PHP တွင်အလွန်လက်တွေ့ကျသော DNS Tool function ဖြစ်သည်။ developer များက၎င်းကိုအသုံးပြုသောအခါအခြေခံကွန်ရက်ဗဟုသုတအချို့ရှိသင့်ပြီးအမှားများကိုဖြေရှင်းနိုင်သည်။ မှတ်တမ်းများ, network tools များနှင့်ကျိုးကြောင်းဆီလျော်သော encapsulation များကိုပေါင်းစပ်ခြင်းအားဖြင့်စီးပွားရေးကိုထိခိုက်စေခြင်းမှထိုကဲ့သို့သောပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။