excel函數(shù)公式大全 php gethostbyname為什么可以得到本機(jī)ip?
php gethostbyname為什么可以得到本機(jī)ip?Gethostbyname是PHP提供的一個(gè)系統(tǒng)函數(shù),用于獲取給定名稱的IP地址。其實(shí),原理很簡(jiǎn)單。當(dāng)您調(diào)用此參數(shù)時(shí),此函數(shù)將調(diào)用DNS服務(wù)來
php gethostbyname為什么可以得到本機(jī)ip?
Gethostbyname是PHP提供的一個(gè)系統(tǒng)函數(shù),用于獲取給定名稱的IP地址。其實(shí),原理很簡(jiǎn)單。當(dāng)您調(diào)用此參數(shù)時(shí),此函數(shù)將調(diào)用DNS服務(wù)來獲取給定名稱對(duì)應(yīng)的主機(jī)的IP地址。此操作也適用于此機(jī)器。通常,在系統(tǒng)的主機(jī)中配置了一個(gè)規(guī)則:localhost 127.0.0.1。當(dāng)您調(diào)用gethostbyname(“l(fā)ocalhost”)d時(shí),它返回127.0.0.1,這也是通過DNS獲得的。DNS將首先查詢本地緩存,如果沒有,它將向上級(jí)發(fā)送查詢請(qǐng)求,逐級(jí)查詢。
為什么GetHostByName總是阻塞的?
1、方法在Linux環(huán)境下,gethostbyname函數(shù)用于從DNS查詢域名的IP地址。由于DNS查詢方式為遞歸查詢,在網(wǎng)絡(luò)未連接的情況下查詢域名時(shí),gethostbyname函數(shù)會(huì)出現(xiàn)嚴(yán)重的超時(shí)問題。而且該函數(shù)不能通過set套接字或connect、read等選擇函數(shù)來設(shè)置超時(shí)時(shí)間,因此常常成為程序開發(fā)的瓶頸。在多線程環(huán)境中,gethostbyname將有一個(gè)非常嚴(yán)重的問題,即如果一個(gè)線程的gethostbyname阻塞,其他線程將阻塞gethostbyname,直到線程的gethostbyname函數(shù)返回。我們應(yīng)該如何處理這樣的問題?這里有兩種方法:1。使用警報(bào)器設(shè)置信號(hào)。如果發(fā)生超時(shí),請(qǐng)使用sigsetjmp和siglongjmp跳過gethostbyname函數(shù)。2獨(dú)立地打開一個(gè)線程來調(diào)用gethostbyname函數(shù)。線程除了調(diào)用這個(gè)函數(shù)外什么也不做。2、 方法簡(jiǎn)介1。報(bào)警設(shè)置信號(hào)方法(1)、sigsetjmp和siglongjmp概述。Sigsetjmp:參數(shù)不為0時(shí),保存進(jìn)程的當(dāng)前信號(hào)掩碼字。Siglongjmp:恢復(fù)保存的信號(hào)掩碼字(2),用法#包括