php中fsockopen的用法注意事项
<?php
$fp = fsockopen("www.yourdomain.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.youdomain.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
注意,fsockopen有个突出的问题在于,如果找不到主机,则会发生报错,如果使用域名来作为主机解析,一旦dns解析出现问题 ,则无法访问到服务器,导致无法取到远程内容。
为了撇开DNS的解析,我们可以直接使用IP来代替,但同时存在一个问题 ,我们通常在一个IP上会有多个主机,如何定位到我们的主机呢,办法就是在发送http头时,指定主机名,通常这里的主机名就是我们的域名。因此,以上代码应优化为:
<?php
$fp = fsockopen("xxx.xxx.xxx.xxx", 80, $errno, $errstr, 30);
.....
$out .= "Host: www.youdomain.com\r\n";
.....
说明:xxx.xxx.xxx.xxx为你主机的ip地址
评论

React 18的并发渲染确实是个重大改进,我们在项目中已经升级使用,性能提升明显!