Привет всем. Мне нужно получить содержимое нескольких страниц из одного домена. Теперь для каждой страницы я использую соединение 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, но в этом случае я ничего не получил от сервера (бесконечное время выполнения моего скрипта).
Любое предложение решить эту проблему?
Спасибо!