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 :

Connexion dans les choux sans déconnexion avec un socket [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Connexion dans les choux sans déconnexion avec un socket
    Bonjour,

    Le contexte :
    J'utilise PHP pour me connecter à un serveur via un socket qui m’envoie des trames de manière régulière du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MSG,6,111,11111,3C65C6,111111,2018/01/27,15:15:46.696,2018/01/27,15:15:46.761,,,,,,,,4456,-1,0,0,0
    Le problème :
    Lorsqu'il y a un temps assez long sans trame, le script semble se déconnecter sans prévenir et reste bloqué.

    Mon code :
    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
     
    <?php
    	include('php/configuration.php');
    	include('php/mysql-ouverture.php');
    	include('php/fonctions.php');
     
    	set_time_limit(0);
     
    	if( !($socket = socket_create(AF_INET, SOCK_STREAM, 0)) )
    	{
    		die("Impossible de créer le socket : [".socket_last_error()."] ".socket_strerror(socket_last_error())."\n");
    	}
    	echo "Socket créé\n";
     
    	if( !socket_connect($socket, ADSB_SERVER, ADSB_PORT) )
    	{
    		die("Impossible de se connecter : [".socket_last_error()."] ".socket_strerror(socket_last_error())."\n");
    	}
    	echo "Connection établie\n";
     
    	do
    	{
    		$line = socket_read($socket, 1024);
     
    		if( preg_match('~(AIR|CLK|ID|MSG|SEL|STA),(\d),(\d+),(\d+),([0-9A-F]{6}),(\d+),(\d{4}\/\d{2}\/\d{2}),(\d{2}:\d{2}:\d{2}.\d+),(\d{4}\/\d{2}\/\d{2}),(\d{2}:\d{2}:\d{2}.\d+),([0-9A-Z ]{8})?,(-?\d+)?,(\d+)?,(\d+)?,(\d+.\d+)?,(\d+.\d+)?,(-?\d+)?,(\d+)?,(-?[0-1])?,(-?[0-1])?,(-?[0-1])?,(-?[0-1])?~', $line, $matches) )
    		{
    			// Ici du code d'analyse, etc.
    		}
    		else
    		{
    			echo $line;
    		}
    	}
    	while(true);
     
    	socket_close($socket);
     
    	include('php/mysql-fermeture.php');
    ?>
    Votre aide est la bienvenue pour améliorer mon petit script et surtout le rendre fonctionnel H24.

    Merci par avance,
    ZiP

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    Les socket on un timeout par défaut.
    Tu peux le trouver en consultant la valeur default_socket_timeout dans ton phpinfo() par exemple.

    Si c'est trop court tu peux le modifier via socket_set_option :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>60, "usec"=>0)); // 1min de timeout
    http://php.net/manual/fr/function.socket-set-option.php

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Merci pour cette information !

    Je vais augmenter la valeur de base qui est de 60 chez moi.

    Merci,
    ZiP

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2006, 12h33
  2. Google Adsense dans les choux
    Par ArHacKnIdE dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 28/05/2006, 11h43
  3. perf dans les choux
    Par _developpeur_ dans le forum Access
    Réponses: 13
    Dernier message: 01/12/2005, 11h57

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