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 :

[Système] pfsockopen , connexion persistante


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut [Système] pfsockopen , connexion persistante
    Bonjour à tous,

    J'ai une appli php qui comunique avec un appli C++ via socket. L'appli PHP s'identifie auprès de l'appli c++ via un numéro de ticket.

    Pour que ce système d'authentification marche j'ai besoin que chaque utilisateurs qui se connecte ai une connexion persistante. J'ai donc fait ceci dans mon constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function __construct()
    	{
    		$this->sAdresse = "localhost";
    		$this->sPort    = 34000;
    		$this->sTimeout = 10;
    		$this->sSocket = pfsockopen($this->sAdresse,$this->sPort,$this->errno,$this->errstr,$this->sTimeout);
     
    		if(!$this->sSocket)
    		{
    			echo'<div style="padding:3%;width:50%;height:100px;background-color:#ff6f6f;border:2px solid #ba0808;margin:0 auto;text-align:center;">
    		Unable to contact IpMonitor on '.$this->sAdresse.':'.$this->sPort.' <br />'.$errstr.'</div>';
    			fclose($this->sSocket);
    		}
    	}
    Sur ma page d'accueil la connexion est créee lors de l'instanciation de la classe.
    Cependant j'ai un peu de mal à saisir le fonctionnement des connexions persistantes.

    Si (comme c'est le cas actuellement) je fait un $monObj = new maclasse() a chaque nouvelle page qu'en est il de la connexion ? Une nouvelle est elle créée ?

    Si non, comment son créer les nouvelles connexion persistante.

    Une fois une connexion ouvertes , le port (ici 34000) est il utilisable par d'autre connexion ou alors est il occupé ?
    Les ressources n'étant pas sérializable , si je sérialise mon objet, serais je en mesure d'utiliser ma connexion persistante sur la page suivante de mon appli ?
    $monobj->envoyertextesursocket();

    Je pose toutes ces question car mes tests sont loins d'être concluant avec les connexiond persistantes (alors que mon appli marche très bien en connexion normal mais n'est du coup pas multi utilisateur)

    merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    je pense que étant donné ton constructeur (tu fais un pfsockopen), à chaque fois que tu fais un new myClasse, tu recrée une connexion persistante.

    Si tu veux que ta connexion soit vraiment persistante entre pages, instancie ton objet une fois au début et sérialize le de page en page ...

  3. #3
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Il est nécessaire de repasser par le constructeur tel qu'est le code et n'est pas un problème du fait que la persistance en PHP est gérée de telle manière que la ressource est retrouvée dès lors que les paramètres de la fonction (pfsockopen ici) sont de nouveau identiques (PHP sérialise les paramètres significatifs en une chaîne puis la hash pour former un identifiant "unique"). Mais c'est théorique car il faut éventuellement tenir compte des considérations techniques (gestion des différents processus notamment).

    Il n'y a de toute manière, comme l'a souligné grunk, pas d'autres moyens de rendre persistant un socket étant donné qu'une variable de type ressource n'est pas sérialisable.

Discussions similaires

  1. [MySQL] [connexion persistante]MySQLi le propose t il en natif?
    Par hansaplast dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/08/2006, 14h44
  2. MySQLi : connexions persistantes?
    Par Gruik dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/05/2006, 21h35
  3. [MySQL] Mysqli et connexions persistantes
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2006, 13h04
  4. [PHP & PostGreSQL] Connexion persistante & Res Id
    Par BuLma dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 25/08/2003, 11h35
  5. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37

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