3
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,但在這種情況下,我沒有從服務器獲取任何東西(我的腳本的無限執行時間)。
有沒有解決這個問題的建議?
謝謝!
如果我只發送連接:關閉,如何將服務器知道我需要臨屋page2.html進行檢索? – 2010-10-19 18:04:03
您仍然爲每個頁面發送所有其他標題,但只發送最後一頁的「連接:關閉」。 – rojoca 2010-10-19 20:28:45
無限的加載時間..在這種情況下.. 謝謝無論如何;) – 2010-10-20 13:55:03