Hy все. Мне нужно получить содержимое нескольких страниц из одного домена. Теперь для каждой страницы я использую fsockopen соединение, и я получаю содержание страницы так:?Получить несколько страниц с одним 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, но в этом случае я ничего не получил с сервера (бесконечное время выполнения моего скрипта).
Любые предложения по этому вопросу?
Спасибо!
Если я посылаю только соединения: Close, как будет сервер знает, что мне нужен тх page2.html, чтобы восстановить? –
Вы по-прежнему отправляете все остальные заголовки для каждой страницы, но только отправляете 'Connection: Close' для последней страницы. – rojoca
Бесконечное время загрузки .. в этом случае .. В любом случае, спасибо;) –