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 :

Comment définir un timeout sur une socket PHP ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 73
    Points : 65
    Points
    65
    Par défaut Comment définir un timeout sur une socket PHP ?
    J'utilise les sockets en PHP, et j'aimerais savoir si il existerais une méthode pour rendre une socket non bloquante sur la fonction socket_read();, tout en respectant une timeout pour que le serveur d'en face puisse répondre. J'utilise le protocol UDP, et si je définis la socket comme non bloquante, j'obtiens ce message d'erreur:

    socket_read() unable to read from socket [0]: Une
    opération non bloquante sur un socket n'a pas pu être achevée
    immédiatement.
    Des idées?

    Merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Arf, j'avais pas vu le timeout, la seule fonction que j'ai vu dans la doc qui devrais convenir c'est socket_select : http://fr.php.net/socket_select

    appelle la avant d'utiliser socket_read, les commentaires regorgent d'exemples
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 73
    Points : 65
    Points
    65
    Par défaut
    Je lis toujours les documentations officielles avant de poser des questions du moins, jessaie de les lire correctement. Mais la désolé, j'ai rien trouvé qui pouvait m'aider dans le manuel officiel, d'ou ma question sur le forum.

    Bref, qqun pourrait-il me donner un tip?

    [EDIT]: je viens de voir ta réponse, merci beaucoup, je vais y jetter un oeil... Quesce que vous pensez à propos du message d'erreur?

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $socks = array($socket);
    socket_select($socks, NULL, NULL, 2, 0);
    if(in_array($socket, $socks)) $var = socket_read($socket);
    de plus, il me semblait qu'avec UDP, il vallait mieux utiliser recvfrom....
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 73
    Points : 65
    Points
    65
    Par défaut
    Merci! Ce bout de code marche très bien. J'ai pas encore tout compris comment il fonctionne, mais il mache miraculeusement bien pour mon script!

    Merci et [Résolu]

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    De rien,

    en fait ce que fait select, c'est qu'elle regarde si un socket est près pour une opération (lecture, écriture, récolte d'erreur) selon le tableau dans lequel il est

    les deux derniers paramètres sont le timeout (nombre de secondes et de mili-secondes)

    si un socket est prêt pour une opération il est laissé dans son tableau, sinon il est enlevé

    Je pense que tu comprends mieux le code maintenant ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 73
    Points : 65
    Points
    65
    Par défaut
    Ouais, merci bien

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

Discussions similaires

  1. Définir un timeout sur une requête de récuperation
    Par xsight dans le forum Hibernate
    Réponses: 3
    Dernier message: 29/06/2010, 10h30
  2. Java nio : TimeOut sur une socket d'un selector
    Par souihli dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 16/10/2008, 10h26
  3. Réponses: 6
    Dernier message: 06/05/2008, 17h52
  4. [Web Service][SOAP] Comment définir un timeout pour une connexion SOAP ?
    Par lehic dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/06/2007, 17h07
  5. Réponses: 3
    Dernier message: 20/10/2006, 19h50

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