socket et lecture en boucle de pages web
Bonjour,
J'ai créé une fonction à l'aide de socket, qui permet de lire le contenu de pages web (toujours sur le meme site web), à partir d'adresses stockés dans une BDD mysql.
Le problème est qu'au bout d'un certains temps le retour de ma socket (à l'air vide)
Voici ma fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| function lire_page_texte_brut($name, $chemin)
{
$data = '';
$adresse = $name . $chemin;
//la requête
$envoi = "GET ".$chemin." HTTP/1.1\r\n";
$envoi .= "Host: ".$name."\r\n";
$envoi .= "Connection: Close\r\n";
$envoi .= "Content-type: application/x-www-form-urlencoded\r\n";
$envoi .= "Content-Length: ".strlen($data)."\r\n\r\n";
$envoi .= $data."\r\n";
/*ouverture socket*/
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket < 0){
die('FATAL ERROR: socket_create() : " '.socket_strerror($socket).' "');
}
if (socket_connect($socket,gethostbyname($name),80) < 0){
die('FATAL ERROR: socket_connect()');
}
/*/ouverture socket*/
/*envoi demande*/
if(($int = socket_write($socket, $envoi, strlen($envoi))) === false){
die('FATAL ERROR: socket_write() failed, '.$int.' characters written');
}
/*/envoi demande*/
/*lecture réponse*/
$reception = '';
while($buff = socket_read($socket, 2000))
{
$reception.=$buff;
}
/*lecture réponse*/
socket_close($socket);
return $reception;
} |
ensuite cette fonction est reprise dans mon bout de code principal un peu dans ce style
Citation:
while ($donnees = mysql_fetch_array($reponse) )
{
//echo $donnees['id'];
// lire le texte de chaque annonce
$contenu_annonce = lire_page_texte_brut($donnees['site'], $donnees['lien']);
...
LA JE FAIS UN TAS DE TRAITEMENT
....
}
...
J'ai bien essayé de mettre une temporisation à la fin de la boucle de 1 secondes, pensant que c'était peut etre le serveur qui était saturé , mais rien y fait ,le pb est toujours présent.
Généralement, il boucle peut être 20 ou 30 fois (je ne serais pas être précis sur ce point) sans problème, ma variable $reception contient visiblement le code html de la page web visé, puis après plus rien comme si la variable $reception était vide.
Merci pour ceux qui se pencheront sur mon pb ou auront une idee ou une solution, ayant bien conscience que celui ci n'a pas l'air simple.