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 :

[Réseau] Attendre une requête ??


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut [Réseau] Attendre une requête ??
    Bonjour,
    J'aimerais savoir comment faire pour rester en écoute jusqu'a ce qu'une requête arrive sur mon serveur. Je pense que c faisable avec socket_select( ) mais je ne sais pas l'utiliser..
    Merci pour votre aide.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Juste une note au passage sans répondre à la question : ce n'est pas un comportement qui est autorisé sur tous les hébergeurs, les fonctions de type "listen" peuvent être désactivées.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut
    Ce n'est pas un probleme car je suis en local
    Sinon t'a pas une solution??

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    je dirais socket_listen

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut
    Et je la met dans une boucle infini??
    genre
    while (true)
    {
    socket_listen(...............)
    }

    ??

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Il me semble que les exemples sur php.net sont assez parlant ->
    http://fr2.php.net/sockets

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par haffouff
    Et je la met dans une boucle infini??
    genre
    while (true)
    {
    socket_listen(...............)
    }

    ??
    Regarde la doc, c'est un bon début.
    http://fr.php.net/manual/fr/function.socket-listen.php

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut
    Merci je vais faire un tour et je vous tiendrez au courant...

  9. #9
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Points : 78
    Points
    78
    Par défaut
    voila j'ai trouvé cet exemple sur le site php.net.
    Mais je voulais savoir s'il crée des processus fils à chaque fois qu'il reçoit une requête ou utilise-t-il un autre principe??

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
    /*
     * Created on 4 mai 2006
     *
     * To change the template for this generated file go to
     * Window - Preferences - PHPeclipse - PHP - Code Templates
     */
     //#!/usr/local/bin/php -q
     
    error_reporting(E_ALL);
     
    /* Autorise l'exécution infinie du script, en attente de connexion. */
    set_time_limit(0);
     
    /* Active le vidage implicite des buffers de sortie, pour que nous
     * puissions voir ce que nous lisons au fur et à  mesure. */
    ob_implicit_flush();
     
    $address = '192.179.9.2';
    $port = 1311;
     
    if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
       echo "socket_create() a échoué : raison : " . socket_strerror($sock) . "\n";
    }
     
    if (($ret = socket_bind($sock, $address, $port)) < 0) {
       echo "socket_bind() a échoué : raison : " . socket_strerror ($ret) . "\n";
    }
     
    if (($ret = socket_listen($sock, 5)) < 0) {
       echo "socket_listen() a échoué : raison : " . socket_strerror ($ret) . "\n";
    }
     
    do {
       if (($msgsock = socket_accept($sock)) < 0) {
           echo "socket_accept() a échoué : raison : " . socket_strerror ($msgsock) . "\n";
           break;
       }
       /* Send instructions. */
       $msg = "\Bienvenue sur le serveur de test PHP.\n" .
           "Pour quitter, tapez 'quit'. Pour éteindre le serveur, tapez 'shutdown'.\n";
       socket_write($msgsock, $msg, strlen($msg));
     
       do {
           if (false === ($buf = socket_read($msgsock, 2048))) {
               echo "socket_read() a échoué : raison : " . socket_strerror ($ret) . "\n";
               break 2;
           }
           if (!$buf = trim($buf)) {
               continue;
           }
           if ($buf == 'quit') {
               break;
           }
           if ($buf == 'shutdown') {
               socket_close($msgsock);
               break 2;
           }
           $talkback = "PHP: You said '$buf'.\n";
           socket_write($msgsock, $talkback, strlen($talkback));
           echo "$buf\n";
       } while (true);
       socket_close($msgsock);
    } while (true);
     
    socket_close($sock);
     
    ?>

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

Discussions similaires

  1. Flux réseau d'une requête
    Par Wil14 dans le forum Administration
    Réponses: 14
    Dernier message: 16/09/2011, 14h27
  2. [AC-97] Temps de réponse d'une requête lancée en réseau
    Par niko8181 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/10/2009, 17h56
  3. Attendre la fin d'une requête HTTP.
    Par WinNew dans le forum Flex
    Réponses: 1
    Dernier message: 03/03/2009, 16h29
  4. [Réseau] envoyer une requête http POST
    Par rich25200 dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 23h15
  5. [réseau] capter une requête sur un port spécifique
    Par ebaynaud dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2006, 13h26

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