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 :

Stocker un socket comme variable de session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut Stocker un socket comme variable de session
    Moi j'aimerai créer une socket dans un script en tant que variable de session et l'utiliser dans d'autres scripts pour communiquer.

    Je n'ai pas encore testé.
    Est-ce réalisable?
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  2. #2
    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
    Non car toute variable de type ressource (un descripteur de fichier, une connexion à une base, ...) n'est pas sérialisable. Toutefois, les fonctions ayant un rôle persistant (pfsockopen par exemple) maintiennent cette ressource en état (un certain temps) et pourra être récupérée en fournissant à nouveau exactement les mêmes paramètres (puisque c'est sur la base de ceux-ci que la ressource est conservée en mémoire par un processus interne et propre à PHP de hachage).

  3. #3
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Arf, le retour de pfsockopen.

    En fait j'utilise, socket_create.
    Donc dans ce cas, comment faire une socket persistante?

    J'ai comme contrainte de forcément appeler mon script dans un navigateur, pas en ligne de commande.

    Merci déjà pour ta réponse et merci d'avance pour les autres.

    PS: vous retrouverez ma classe ComSeveur que j'aimerai rendre persistante dans la discussion: http://www.developpez.net/forums/sho...29#post2853029
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  4. #4
    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
    Malheureusement pour vous les fonctions de l'extension sockets n'offre pas de moyen de persistance. Cela dit, et entre parenthèses, cette extension deviendra une extension PECL à partir de la version 5.3.0 ...

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Citation Envoyé par julp Voir le message
    ...cette extension deviendra une extension PECL à partir de la version 5.3.0 ...
    Salut,
    Par curiosité Julp, quelle incidence ?

    Sinon pour le problème de natoine, sérialiser tels quels un socket c'est effectivement impossible.
    Par contre sérialiser l'état d'un socket afin de pouvoir le réouvrir dans le même état précédement à sa fermeture c'est *surement* réalisable.
    A étudier dans le détail de ton projet, mais c'est une piste qui pourrait fonctionner.

    Autre idée, délégué la persistance dans un processus persistant.
    En effet lorsque ton appli coté web souhaite créer une socket, pourquoi ne pas délégué cela à un processus PHP cli externe, qui pour le coup serait persistant.
    L'interface web se contente d'enregistrer une socket de lecture PHP via un identifant. Et n'à plus qu'à controler sa création sa destruction.
    Ainsi à chaque rechargement de page tu peux interroger ta socket PHP qui est resté connecté avec ton serveur final.
    Bon ce n'est qu'une idée, dans la pratique faut voir si le processus cli ne va pas mourir avec la fin du processus httpd............... A étudier encore une fois.

    Autremnent, concernant pfsockopen, supposons que tu l'utilises, comment vas tu, entre deux pages, être capable de retrouver le flux ouvert précédemment ?
    Cette fonction ne semble pas renvoyer d'identifiant stockable en mémoire. De plus je ne sais même pas si PHP va être capable de retrouver un flux ouvert dans une page A depuis une page B. Et puis comment ? avec quelles fonctions ?
    A moins qu'il n'y ai une information que je n'ai pas vu dans la doc.

    bye

  6. #6
    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
    Citation Envoyé par kaymak
    Par curiosité Julp, quelle incidence ?
    Cette extension ne sera alors plus standard puisqu'elle ne sera plus incluse avec les sources de PHP, vous aurez alors peu de chance de la retrouver sur tout environnement PHP.

    Citation Envoyé par kaymak
    Autremnent, concernant pfsockopen, supposons que tu l'utilises, comment vas tu, entre deux pages, être capable de retrouver le flux ouvert précédemment ?
    Cette fonction ne semble pas renvoyer d'identifiant stockable en mémoire. De plus je ne sais même pas si PHP va être capable de retrouver un flux ouvert dans une page A depuis une page B. Et puis comment ? avec quelles fonctions ?
    PHP crée, en interne, un identifiant à partir de la valeur des paramètres (regroupement des différents paramètres de la fonction en une chaîne qui est ensuite hachée afin de constituer un identifiant - entier), ceci lui permet donc de conserver cette ressource en l'état et de la restituer lorsque la fonction est rappelée avec exactement les mêmes valeurs pour ses paramètres.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Citation Envoyé par julp Voir le message
    Cette extension ne sera alors plus standard puisqu'elle ne sera plus incluse avec les sources de PHP, vous aurez alors peu de chance de la retrouver sur tout environnement PHP.
    Faudra l'installer via pecl en fait, si elle reste dispo. ok merci.

    Citation Envoyé par julp Voir le message
    PHP crée, en interne, un identifiant à partir de la valeur des paramètres (regroupement des différents paramètres de la fonction en une chaîne qui est ensuite hachée afin de constituer un identifiant - entier), ceci lui permet donc de conserver cette ressource en l'état et de la restituer lorsque la fonction est rappelée avec exactement les mêmes valeurs pour ses paramètres.
    Donc, à priori, on partage la même ressource avec tout les utilisateurs :/
    Et on à finalement assez peu de contrôle dessus.

  8. #8
    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
    Citation Envoyé par kaymak
    Faudra l'installer via pecl en fait, si elle reste dispo. ok merci.
    Oui mais ça reste assez rare d'aller installer des extensions PECL. Non seulement il faut que ça réponde à des besoins très précis mais il faut en plus pouvoir l'installer (donc disposer des droits nécessaires).

    Citation Envoyé par kaymak
    Donc, à priori, on partage la même ressource avec tout les utilisateurs :/
    Et on à finalement assez peu de contrôle dessus.
    Oui, je ne vois pas trop comment PHP pourrait faire autrement surtout quand il fonctionne comme module mais cela signifie qu'il faut connaître les valeurs des différents paramètres de la fonction concernée (les probabilités qu'un tel cas se présente sont donc très minces).

  9. #9
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Pour ma part, on a modifié notre protocole de com.
    Chaque message est signé avec un identifiant.
    Du coup, on ferme les sockets à chaque fois mais on sait que c'est toujours le même client qui communique.

    La bidouille quoi.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    La bidouille c'est quand on ne sait pas trop ce que l'on fait mais qu'on y arrive + / -, pas quand on trouve des solutions fonctionnelles et compréhensives pour des problèmes que l'on souhaite régler avec des outils inadaptés C'est encore moins le cas quand on fait des protocoles tant bien même cela ne correspond à l'idéal que l'on à imaginé en débutant le projet.

Discussions similaires

  1. stocker une valeur dans une variable de session
    Par heeedi dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2009, 08h46
  2. Stocker dans une variable de session une valeur
    Par leroidje dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/09/2008, 14h34
  3. Sauvegarde Objet comme variable session
    Par nabil1 dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2008, 00h03
  4. Variable de session
    Par Sadneth dans le forum ASP
    Réponses: 6
    Dernier message: 14/11/2003, 11h12
  5. variable de session
    Par divableue dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2003, 16h04

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