mac php 域名解析,关于域名解析

测试脚本:

file_get_contents(“http://phpor.net/xxx.php”);

strace过程:

[root@ja-4-65 ~]# strace -e network php b.php

socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = -1 EAFNOSUPPORT (Address family not supported by protocol)    虽然编译时声明支持IPv6,但是还是再检查是否支持IPv6, 见代码段1

socket(PF_FILE, SOCK_STREAM, 0) = 3

connect(3, {sa_family=AF_FILE, path=”/var/run/nscd/socket”}, 110) = -1 ENOENT (No such file or directory)

socket(PF_FILE, SOCK_STREAM, 0) = 3

connect(3, {sa_family=AF_FILE, path=”/var/run/nscd/socket”}, 110) = -1 ENOENT (No such file or directory)

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3

connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr(“172.16.108.100”)}, 28) = 0

send(3, “\342=\1\0\0\1\0\0\0\0\0\0\6ilogin\4sina\3com\2cn\0″…, 36, MSG_NOSIGNAL) = 36

recvfrom(3, “\342=\201\200\0\1\0\3\0\4\0\4\6ilogin\4sina\3com\2cn\0″…, 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr(“172.16.108.100”)}, [16]) = 220

socket(PF_NETLINK, SOCK_RAW, 0) = 3

bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0

getsockname(3, {sa_family=AF_NETLINK, pid=17124, groups=00000000}, [12]) = 0

sendto(3, “\24\0\0\0\26\0\1\3\246m\201P\0\0\0\0\0\0\0\0”, 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20

recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{“

recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{“\24\0\0\0\3\0\2\0\246m\201P\344B\0\0\0\0\0\0\1\0\0\0\10\0\1\0\177\0\0\1″…, 4096}], msg_controllen=0, msg_flags=0}, 0) = 20

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3

connect(3, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr(“10.77.7.251”)}, 16) = 0

getsockname(3, {sa_family=AF_INET, sin_port=htons(37927), sin_addr=inet_addr(“10.49.4.65”)}, [16]) = 0

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3

connect(3, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr(“172.16.139.229”)}, 16) = 0

getsockname(3, {sa_family=AF_INET, sin_port=htons(37927), sin_addr=inet_addr(“10.49.4.65”)}, [16]) = 0

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3

connect(3, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr(“10.49.4.245”)}, 16) = 0

getsockname(3, {sa_family=AF_INET, sin_port=htons(37927), sin_addr=inet_addr(“10.49.4.65”)}, [16]) = 0

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3

connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr(“10.49.4.245”)}, 16) = -1 EINPROGRESS (Operation now in progress)

getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0

send(3, “GET /xxxx.php HTTP/1.0\r\n”, 30, MSG_DONTWAIT) = 30

send(3, “Host: phpor.net\r\n”, 26, MSG_DONTWAIT) = 26

send(3, “\r\n”, 2, MSG_DONTWAIT) = 2

recv(3, “HTTP/1.1 200 OK\r\nDate: Fri, 19 O”…, 8192, MSG_DONTWAIT) = 284

recv(3, “”, 8192, MSG_DONTWAIT) = 0

recv(3, “”, 8192, MSG_DONTWAIT) = 0

相关代码:

代码段1:php-5.3.3/main/network.c

# if HAVE_IPV6

/* probe for a working IPv6 stack; even if detected as having v6 at compile

* time, at runtime some stacks are slow to resolve or have other issues

* if they are not correctly configured.

* static variable use is safe here since simple store or fetch operations

* are atomic and because the actual probe process is not in danger of

* collisions or race conditions. */

if (ipv6_borked == -1) {

int s;

s = socket(PF_INET6, SOCK_DGRAM, 0);

if (s == SOCK_ERR) {

ipv6_borked = 1;

} else {

ipv6_borked = 0;

closesocket(s);

}

}

hints.ai_family = ipv6_borked ? AF_INET : AF_UNSPEC;

# endif

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

# if HAVE_IPV6

/* probe for a working IPv6 stack; even if detected as having v6 at compile

* time, at runtime some stacks are slow to resolve or have other issues

* if they are not correctly configured.

* static variable use is safe here since simple store or fetch operations

* are atomic and because the actual probe process is not in danger of

* collisions or race conditions. */

if(ipv6_borked==-1){

ints;

s=socket(PF_INET6,SOCK_DGRAM,0);

if(s==SOCK_ERR){

ipv6_borked=1;

}else{

ipv6_borked=0;

closesocket(s);

}

}

hints.ai_family=ipv6_borked?AF_INET:AF_UNSPEC;

# endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值