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 : 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;
}
ensuite cette fonction est reprise dans mon bout de code principal un peu dans ce style

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.