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
ensuite cette fonction est reprise dans mon bout de code principal un peu dans ce style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Partager