Network Programming အတွက် PHP အတွက် PHP ကိုအသုံးပြုသောအခါ GethostbyName () function သည်၎င်း၏သက်ဆိုင်ရာ IP address သို့ hostname ကိုဖြေရှင်းရန်ဘုံကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင် GetHostbyName ၏အမှားအယွင်း () "undefined host" ပြန်လာသည့်အမှားကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤအမှားသည်များသောအားဖြင့်ထောက်ပံ့ရန် hostname ကိုဖြေရှင်းနိုင်ခြင်းမရှိကြောင်းပြသသည်။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုဖြေရှင်းရန်ကူညီရန်ဘုံအကြောင်းများနှင့်ဖြေရှင်းနည်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။
ပထမအချက်မှာအသုံးအများဆုံးအကြောင်းပြချက်မှာသင်ပေးထားသော hostname သည် MissPelling သို့မဟုတ်မမှန်ကန်သည့်ပုံစံရှိနိုင်သည်။ GethostbyNAME () function သည်မှန်ကန်သောဒိုမိန်းအမည်သို့မဟုတ်အိမ်ရှင်အမည်လိုအပ်သည်။ အကယ်. သင်ထည့်သွင်းထားသောအိမ်ရှင်အမည်မမှန်ကန်ပါက domain name ကိုမဖြေရှင်းနိုင်ပါက function သည် "undefined host" အမှားတစ်ခုသို့ပြန်လာလိမ့်မည်။
WomeRound - သင်ထည့်သွင်းထားသည့်အိမ်ရှင်အမည်သို့မဟုတ်ဒိုမိန်းအမည်ကိုသေချာအောင်လုပ်ပါ။ host name ကိုသင်၏ browser မှတဆင့်သင်ကြည့်ရှုနိုင်သည် ။
<span><span>ping example.com
</span></span>
GetHostbyName () hostname ကို IP address သို့ပြောင်းရန် DNS resolution ကိုမူတည်သည်။ အကယ်. System ၏ DNS Configuration သည်မမှန်ကန်ပါက DNS server သည်ဒိုမိန်းအမည်ကိုမဖြေရှင်းနိုင်ပါက function ကိုအမှားတစ်ခုပြန်ပေးရန်လည်းဖြစ်စေလိမ့်မည်။
Womboxound - PHP script ပေါ်တွင် run နေသောဆာဗာ၏ DNS ချိန်ညှိချက်များကိုစစ်ဆေးပါ။ DNS server ကိုမှန်ကန်စွာပြင်ဆင်ရန်အတွက် /etc/resolv.conf ဖိုင်ကို Linux System တွင်စစ်ဆေးနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-built_in">cat</span></span><span> /etc/resolv.conf
</span></span>
ဖိုင်တွင်မှန်ကန်သော DNS server address ရှိကြောင်းသေချာပါစေ။ မရရှိလျှင် Google (8.8.8.8 နှင့် 8.8.4.4) ကဲ့သို့သောအများပြည်သူ dns ကိုထည့်ပါ။
တစ်ခါတစ်ရံ GethostbyName () ဒိုမိန်းအမည်သည်မှန်ကန်သော်လည်း DNS Cache က DNS NAMEN NATE ကိုမဖြေရှင်းနိုင်ပါ။
WomeRoundoud : DNS cache ကိုရှင်းလင်းပါ။ ကွဲပြားခြားနားသော operating systems တွင်သန့်ရှင်းရေးနည်းလမ်းများရှိသည်။ ဥပမာအားဖြင့်, Linux Systems တွင် NSCD (NAME 0 န်ဆောင်မှု cache daemon) ကိုပြန်လည်စတင်နိုင်သည်။
<span><span>sudo systemctl restart nscd
</span></span>
0 င်းဒိုးစနစ်များတွင်အောက်ပါ command ကို အသုံးပြု. DNS cache ကိုရှင်းလင်းနိုင်သည်။
<span><span>ipconfig /flushdns
</span></span>
GetHostbyName () သည်ရိုးရှင်းသော function တစ်ခုဖြစ်သော်လည်း၎င်းသည်အကန့်အသတ်ရှိသည်။ ဥပမာအားဖြင့်၎င်းသည်ပထမဆုံး pareded IP လိပ်စာကိုအမြဲပြန်လာသည်။ ခွဲခြမ်းစိတ်ဖြာမှုမအောင်မြင်ပါက၎င်းသည်အမှားသတင်းအချက်အလက်များကိုပိုမိုပေးမည့်အစားမူလ hostname ကိုပြန်ပို့သည်။ ထို့ကြောင့်၎င်းကိုသင်အသုံးပြုသောအခါသတိထားရန်လိုအပ်သည်။
WomeRoundround : သင် GetAddrinfo () ကို သုံး. သင်ပြ problem နာကိုရှာဖွေရန်အသေးစိတ်အချက်အလက်များကိုပိုမိုအသေးစိတ်ဖော်ပြနိုင်သည့်ပိုမိုအားကောင်းသည့်အခြားရွေးချယ်စရာတစ်ခုဖြစ်သည်။
<span><span><span class="hljs-variable">$hostname</span></span><span> = </span><span><span class="hljs-string">'example.com'</span></span><span>;
</span><span><span class="hljs-variable">$info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getaddrinfo</span></span><span>(</span><span><span class="hljs-variable">$hostname</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$info</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$info</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$entry</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'IPစကားပေြာဟော: '</span></span><span> . </span><span><span class="hljs-variable">$entry</span></span><span>[</span><span><span class="hljs-string">'host'</span></span><span>] . PHP_EOL;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'အိမ်ရှင်မကိုဖြေရှင်းရန်မအောင်မြင်ပါ'</span></span><span> . PHP_EOL;
}
</span></span>
GetAddrinfo () သည် ရှုပ်ထွေးသောကွန်ယက်တောင်းဆိုမှုများအတွက်သင့်တော်သော IP လိပ်စာများပါ 0 င်သောသတင်းအချက်အလက်များကိုပြန်လည်ရောက်ရှိစေသည်။
PHP script သည် proxy server မှတဆင့်ကွန်ယက်ကိုကြည့်ရှုသည့်ပတ်ဝန်းကျင်တွင်လည်ပတ်နေပါက proxy settings သည် GethostbyName () function ကိုပုံမှန်လုပ်ဆောင်ခြင်းကို 0 င်ရောက်စွက်ဖက်နိုင်သည်။ Proxy server သည် DNS တောင်းဆိုမှုများကိုမပြုလုပ်နိုင်ပါ,
WomeRound - PHP ရဲ့ proxy settings တွေကိုမှန်ကန်စွာ configure လုပ်ဖို့သေချာအောင်လုပ်ပါ။ PHP ၏ proxy configuration ကို ini_set မှတဆင့်သတ်မှတ်နိုင်သည်သို့မဟုတ်တောင်းဆိုမှုများကိုပုံမှန်အားဖြင့်စနစ်အဆင့် proxy settings များမှတဆင့်ပုံမှန်အားဖြင့်ချိန်ညှိနိုင်သည်ကိုသေချာအောင်လုပ်နိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'http.proxy_host'</span></span><span>, </span><span><span class="hljs-string">'proxy.example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'http.proxy_port'</span></span><span>, </span><span><span class="hljs-string">'8080'</span></span><span>);
</span></span>
အချို့ဖြစ်ရပ်များတွင် Firewall သည် PHP scripts များကို DNS 0 န်ဆောင်မှုများကိုရယူခြင်းမှတားဆီးနိုင်သည်။ PHP သည် PHP သည်ပြင်ပ DNS ဆာဗာများသို့ 0 င်ရောက်နိုင်ရန်အတွက် Network connection များနှင့် firewall settings ကိုစစ်ဆေးပါ။
WomeRound - DNS တောင်းဆိုမှုများကိုဖြေရှင်းရန်သေချာစေရန်ဆာဗာ၏ firewall settings ကိုစစ်ဆေးပါ။ Firewall စည်းမျဉ်းများကို Linux System များတွင်ကြည့်ရှုရန်သို့မဟုတ်ပြုပြင်ရန် Iptables command ကိုသင်အသုံးပြုနိုင်သည်။
<span><span>sudo iptables -L
</span></span>
GetHostbyName () သည်ရိုးရှင်းသောနှင့်လက်တွေ့လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော်၎င်း၏ကန့်သတ်ချက်များသည်အမှားအယွင်းများဖြစ်စေနိုင်သည်။ "undefined host" အမှားကိုကြုံတွေ့ရသောအခါအိမ်ရှင်အမည်မှာမှန်ကန်ကြောင်းသေချာအောင်လုပ်ပါ, ထို့နောက် DNS configuration, cache ပြ issues နာများကိုစစ်ဆေးပါ။ ပိုမိုရှုပ်ထွေးသောအင်္ဂါရပ်များလိုအပ်ပါက GetAddrinfo () ကို အသုံးပြုခြင်းကိုစဉ်းစားပါ။ အထက်တွင်ဖော်ပြခဲ့သောဖြစ်နိုင်ချေရှိသောအကြောင်းရင်းများကိုဖယ်ထုတ်ခြင်းအားဖြင့်သင်သည်များသောအားဖြင့်အမှားကိုဖြေရှင်းနိုင်သည်။