Hy all. J'ai besoin d'obtenir le contenu de plusieurs pages à partir d'un seul domaine. Maintenant, pour chaque page que j'utiliser une connexion fsockopen, et je reçois le contenu de la page de cette façon:Obtenir plusieurs pages avec un seul 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);
}
>
Mes déchets de script temps, avec reconnectant au domaine, pour obtenir la deuxième page. Je me demandais s'il est possible d'utiliser une seule connexion, et d'obtenir plusieurs pages, comme ceci:
<?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);
}
>
Mais cette méthode renvoie le page1.html deux fois, je ne Je ne sais pas pourquoi.
J'ai essayé d'utiliser: Connection: keep alive, ou HTTP/1.0, mais dans ce cas je n'ai rien reçu du serveur (temps d'exécution infini de mon script).
Une suggestion pour résoudre ce problème?
Merci!
Si j'envoie simplement la connexion: Fermer, comment connaître le serveur que j'ai besoin tha page2.html pour être récupéré? –
Vous envoyez toujours tous les autres en-têtes pour chaque page mais n'envoyez que «Connection: Close» pour la dernière page. – rojoca
Temps de chargement infini .. dans ce cas .. Merci quand même;) –