大家好。我需要从一个域中获取多个页面的内容。现在对于每个页面,我都使用 fsockopen 连接,并以这种方式获取页面的内容:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /page1.html HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
fgets($fp, 128);
}
fclose($fp);
}
?>
我的脚本浪费时间重新连接到域来获取第二页。我想知道,是否可以使用单个连接并获取多个页面,如下所示:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /page1.html HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
fgets($fp, 128);
} $out = "GET /page2.html HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
fgets($fp, 128);
}
fclose($fp);
}
?>
但是这个方法两次返回page1.html,我不知道为什么。
我尝试使用:连接:保持活动,或 HTTP/1.0,但在这种情况下,我没有从服务器获得任何东西(我的脚本执行时间无限)。
有什么建议可以解决这个问题吗?
谢谢!