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 :

Latence avec fsockopen


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 121
    Par défaut Latence avec fsockopen
    Bonjour,
    j'utilise fsockopen pour me connecter à un appareil qui contrôle d'autre appareils via wifi (mais là n'est pas le pb...je parle de l'appareil en question)
    le temps de connexion à cet appareil est assez variable...parfois la connexion via fsockopen se fait de suite , parfois je dois attendre plusieurs secondes (j'ai fait une boucle qui permet d'essayer une connection pendant deux secondes, si la connection ne se fait pas je relance la connection et ce 20 fois de suite)....
    au final la connection se fait toujours mais avec un temps trés variable... c'est ce qu'il faut que je réduise au max.
    j'ai quand même l'impression que lorsque j'espace mes estes de quelques minutes la connexion est instantanée...
    j'ai essayé avec stream_socket_client mais c'est pareil...
    je ping toujours mon appareil avec les mêmes temps de réponses, donc je ne pense pas que cela vienne d'un pb réseau
    j'ai cherché du coté du fclose() en pensant que la connexion était mal fermée, mais rien de probant non plus...
    Si quelqu'un à idée.... merci d'avance

    voici mon code réduit au max

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $i=0;$c=0;
    while ($i<20){
    	$fp = fsockopen("192.168.0.50", 5000, $errno, $errstr,2);
    	if ($fp) {$c=1;break;}
    	$i=$i+1;
    }
    if ($c==0){print "erreur";}	
    else {
    	fwrite($fp, chr($dec).chr($dec).chr(0).chr(9).chr(48).chr(48).chr(48).chr(51).chr(00).chr(01).chr(49).chr(49).chr(48)); //enable
    	print ("ok");
    	fclose($fp);
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 121
    Par défaut
    à priori le pb viendrait du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite($fp, chr($dec).chr($dec).chr(0).chr(9).chr(48).chr(48).chr(48).chr(51).chr(00).chr(01).chr(49).chr(49).chr(48));
    si je l’enlève c'est instantané....
    je dois mal m'y prendre pour envoyer les données...

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    J'ai une question bête : pourquoi tu passes par chr pour écrire ta chaine ?
    Si tu envoie une chaine "normale", est-ce que tu as le même résultat ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 121
    Par défaut
    ben parcequ'il faut que j'envoie les codes hexadecimaux : 15 15 00 09 30 30 30 30 00 01 31 31 30
    mais tu as raisons je vais faire un test en envoyant "hello"

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 121
    Par défaut
    bon j'ai essayé d'envoyer "hello" ca marche un peu mieux (cad que j'arrive à me connecter 3 fois de suite assez rapidement, puis la quatrieme est assez longue) mais c'est pas encore ça....
    par contre j'ai une question... dans la doc (trés succinte) que j'ai de l'appareil auquel je me connecte, il est spécifié que je dois envoyer mes commandes et que l'appareil me répond.... moi dans mon code je n'écoute pas les réponses de l'appareil. Est ce que ça pourrait venir de là?
    j'ai un peu de mal à comprendre le système dans le sens ou je ne ferait rien des réponses que m'envoie l'appareil, mais peut être que l'appareil voit que ces réponses ne sont pas acceptés.... et du coup ça le bloque????

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 121
    Par défaut
    bon aprés moulte recherche j'ai réussi à faire marché le truc: plus d'une vingtaine de connection sans latence à la suite.... ensuite ça bloque un peu pendant une quinzaine de seconde et ça repart pour une vingtaine/trentaine de connexion puis ça rebloque et ainsi de suite...
    n'ayant pas de doc précise sur l'appareil auquel je me connecte, j'ai procédé à taton...
    je vous mets le code au cas où...

    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
    $fp = fsockopen("192.168.16.41", 5000,$errno,$errstr,30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
    	stream_set_timeout($fp, 5);
    	$dec=21;
    	fwrite($fp, chr($dec).chr($dec).chr(0).chr(9).chr(48).chr(48).chr(48).chr(51).chr(00).chr(01).chr(49).chr(49).chr(48)); //enable
            $content = "";
            while (!feof($fp)) {  
                $content .= fread($fp, 1024);
                $stream_meta_data = stream_get_meta_data($fp); //Added line
                if($stream_meta_data['unread_bytes'] <= 0) break; //Added line
            }
        fclose($fp);
        echo "ok";//.$content;

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

Discussions similaires

  1. [WB12] Latence avec MySQL
    Par thpma dans le forum WebDev
    Réponses: 4
    Dernier message: 03/09/2008, 18h18
  2. Valider formulaire web avec fsockopen
    Par madislak dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2008, 00h30
  3. Problème de temps de latence avec KeyAdapter
    Par marissa_mean dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 08/10/2006, 20h35
  4. [Système] Simuler un formulaire avec fsockopen()
    Par cyriltra dans le forum Langage
    Réponses: 6
    Dernier message: 25/07/2006, 21h35
  5. Poster une requete POST avec fsockopen
    Par ePoX dans le forum Langage
    Réponses: 8
    Dernier message: 27/11/2005, 14h20

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