<?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地址