IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Socket PHP: Comment ça marche?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut Socket PHP: Comment ça marche?
    Bonjour à vous!

    J'espère que vous allez toutes et tous très bien.

    Voilà, je viens soliciter vos lumières.

    J'aimerais me mettre au socket PHP. Je pense avoir de bonnes connaissances en PHP et en informatique [je précise cela afin d'éviter qu'on n'en revienne au B-A-BA, j'imagine que les socket est un sujet relativement pointu...?].

    L'ami Google malheureusement n'a pas sû me donner du tuto' explicite .
    Quand j'dis tuto: c'est un doc qui m'explique les fonctions de base. J'ai eu des "tuto" qui me balancait des appli' client/serveur complète... j'vois pas l'intérêt . Et c'est assez lourd à apréhender .


    Mon contexte:
    Valider un formulaire à distance et en récupérer la réponse text [cad le document HTML qui résulte de la validation du formulaire].

    Ma problématique:
    Je dois automatiser cette tâche, j'avais d'abord penser à un automate JavaScript en utilisant AJAX afin d'optimiser l'interface... et surtout de faire avec ce que je sais manipuler . Mais AJAX ne permet pas d'accéder à des URLs distantes [sauf via un proxy... ce qui revient à faire via des soket ].

    Mes questions:
    Comment créer un socket via PHP et envoyer des paramêtres en POST via cette dernière?
    Quelles différences entre fsockopen et socket_create? Et plus généralement entre fsock* et socket_*?


    Merci d'avance pour vos lumières .

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut Finalement: cURL
    Bon je découvre tout juste une librairie qui dans mon cas semble plus approprié que les socket:

    cURL!

    Visiblement, en plus, elle est dispo sur les mutualisés de mon hébergeur... Youpi ^^!

    Bref, par contre j'ai un tuto' en anglais... et au vue du résultat j'pense que j'ai zappé un truc dans le fonctionnement.

    Voici le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.test.com');
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
     
    print_r($data);
    echo $data;
    test.com est bien entendu remplacé par un site que je sais fonctionnel et accessible.

    Mon soucis:
    Le script tourne pendant très longtemps avant de clore oO. Plusieurs minutes!

    Ma question:
    Que fait-il exactement pour mettre tant de temps?!

    Merci d'avance!

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je vous recommande de lire sa documentation (qui est à peu près à jour) et plus spécialement celle de curl_setopt où vous trouverez la liste des options et leur description (elles sont triées en fonction du type du paramètre attendu).

    Dans votre code, CURLOPT_HEADER, à vrai, demande que les entêtes HTTP vous soient aussi renvoyées et que le corps de la page vous soit retourné sous la forme d'une chaîne au lieu d'être directement affiché (renvoi par défaut sur le flux php://stdout) grâce à l'option CURLOPT_RETURNTRANSFER fixé à vrai.

    Vous pouvez fixer des timeout via les options CURLOPT_TIMEOUT et CURLOPT_CONNECTTIMEOUT et analyser le temps mis par la fonction curl_exec pour effectuer les différentes tâches (résolution de nom, connexion, etc) en étudiant la fonction curl_getinfo.

  4. #4
    Membre expérimenté Avatar de leodi
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Par défaut
    http://stephaneey.developpez.com/tutoriel/php/sockets/
    C'est là que j'ai appris à m'en servir, c'est très bien fait.
    Bonne chance


    Edit : 100eme message !!

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par leodi
    http://stephaneey.developpez.com/tutoriel/php/sockets/
    C'est là que j'ai appris à m'en servir, c'est très bien fait.
    C'est réinventer la roue, surtout pour le protocole HTTP, en plus d'être plus lent et d'oublier de gérer certains aspects (authentification, envoi de fichiers, etc) Toutefois, là où je vous rejoins c'est dans les cas où cURL n'est pas disponible : comment faire autrement ?

    Edit : les sockets ne seront plus une extension standard

  6. #6
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    stream_socket_client et stream_socket_server ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] SSH en PHP, Comment ça marche
    Par coccoweb dans le forum Langage
    Réponses: 0
    Dernier message: 21/08/2011, 14h58
  2. socket et port, comment ça marche ?
    Par josmiley dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/09/2010, 22h15
  3. socket: un script serveur? comment ca marche?
    Par yenlui dans le forum Langage
    Réponses: 4
    Dernier message: 15/06/2006, 16h28
  4. Comment définir un timeout sur une socket PHP ?
    Par N3odyme dans le forum Langage
    Réponses: 7
    Dernier message: 08/05/2006, 00h04
  5. [sockets]Comment intéragir avec une socket php ?
    Par le Daoud dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 31/10/2005, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo