Bonjour,
> je viens d'essayer de comprendre le fonctionnement de la fonction
> fsockopen, mais j'ai encore du mal.
Ok
> Je cherche à faire une fonction qui se connecte à une page pour la
> récupérer.
>
Ce n'est pas tout à fait la même chose.
fsockopen est une fonction que je qualifierais de "bas niveau" dont
l'utilisation peut procurer quelques plaisirs mais aussi de bon maux de
tête.
Dans l'exemple que tu cites, ce que tu sembles surtout vouloir faire
c'est te connecter en HTTP à un serveur pour récupérer des données.
Dans ce cas il est bien plus pratique d'utiliser CURL
http://fr3.php.net/manual/fr/ref.curl.php
si elle est disponible.
Cette librairie est d'un niveau au dessus des sockets en ce sens qu'elle
s'appuie sur les sockets pour mettre en oeuvre divers protocoles dont HTTP.
En l'utilisant tu résoudras ton problème de récupération de page, mais
ta compréhension de fsockopen ne progressera pas.
La seule fois, pour l'instant, ou j'ai eu besoin de fsockopen, c'est
pour valider une transaction paypal, $fp étant un socket valide:
fputs ($fp, $header . $body);
$res = '';
while (!feof($fp)) {
$res .= fgets ($fp, 1024);
}
est pertinent dans mon contexte pour récupérer la réponse du serveur de
validation paypal.
Dans ton cas, le
$send .= "Connection: Close\r\n\r\n";
me semble louche. Je ne suis pas un expert en HTTP mais tu sembles
indiquer au serveur que tu ne veux pas attendre sa réponse ?? A vérifier
donc dans une doc HTTP.
Pour forger des requêtes HTTP, fiddler est un outils bien pratique aussi.
http://www.fiddlertool.com/fiddler/
en espérant avoir aidé
thierry