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 :

design pattern sockets lecture/écriture


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut design pattern sockets lecture/écriture
    Bonjour,

    je suis à la recherche d'une solution élégante afin de pouvoir lire et écrire sur une socket php.

    Tout d'abord la connexion de la socket se fera via une requête ajax qui initialisera une variable 'online' stockée en bdd et lancera la procédure de connexion.
    Une fois la connexion correctement établit j'aimerais pourvoir lire en boucle sur la socket afin de stocké dans une bdd ou un fichier log, tout en pouvant écrire dessus.

    Je suis ouvert à toute réflexions, propositions, suggestions...
    Est-il préférable de faire ça d'une autre façon, un autre langage?

  2. #2
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Tu parles AJAX et PHP donc j'imagine que tu veux développer une appli Web.

    Tu ouvres une socket avec une requête AJAX? AJAX c'est XMLhttprequest, c'est donc une requête http et non une ouverture de socket....

    Pour répondre à ta question, oui AJAX est adapté pour effectuer des actions de lecture/mise à jour de données BDD ou LOG. Après c'est faisable aussi sans AJAX, le seul interêt de l'AJAX étant de faire tout ça sans recharger ta page.

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    en faite la requête AJAX c'est juste pour lancer le script PHP qui s'occupera de la connexion puis de la lecture/écriture de la socket

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est effectivement possible, tu te sers d'Ajax pour piloter un trigger PHP qui, in-fine, lance une commande quelconque (en l'occurence ouvrir une socket).

    Le seul hic: une fois que tu auras ouvert ta socket, tu sera obligé de terminer le script PHP, sinon le XHR restera pendu en attente de réponse... Or, une fois le script terminé, tu perdras le handle de ta socket et il n'y a aucun moyen de le persister (les handles de ressources ne sont jamais sérialisables). A la limite, si tu es en PHP 5.3 sur un serveur dédié, tu peux créer un daemon PHP qui lui sera capable de garder et traiter la socket jusqu'a ce qu'on lui dise (par un autre trigger) d'arrêter sont travail. J'avais trouvé un article là dessus, le voici: http://devlog.info/2010/03/07/creating-daemons-in-php/

    Il faudrait davantage de détails sur ce que tu souhaite faire pour qu'on te guide.

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    j'aime bien cette idée. c'est un peu ce que je recherche.
    Je voulais comme lancer un thread qui pourrait effectuer des opérations (lecture en continu et écriture) sur une socket.

    En faite j'ai un serveur qui m’enverra des infos une fois connecté et auquel je pourrais envoyer des commandes. je voudrais donc récupérer ces infos pour en faire un log pour ensuite les utiliser.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    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 693
    Par défaut
    Et pourquoi absolument avec PHP ? de ce que tu en dis , tu veux faire un daemon qui écoute une socket réseau en permanance. PHP est tout sauf le plus adapté pour ce genre d'exercice.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par grunk Voir le message
    Et pourquoi absolument avec PHP ? de ce que tu en dis , tu veux faire un daemon qui écoute une socket réseau en permanance. PHP est tout sauf le plus adapté pour ce genre d'exercice.
    Alors attention, j'ai jamais dit que c'était la solution la plus adaptée. C++ ou Java sont certainements de meilleurs candidats dans ce genre d'entreprise. Cela étant, PHP en est tout à fait capable comme le montre l'article cité plus haut et à l'avantage d'être assez simple à mettre en oeuvre (contrairement à C++ ou Java), c'est à toi, en fonction des spécifications de ton projet de faire le bon choix de technos à adopter.

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    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 693
    Par défaut
    C'est pas tant PHP qui m'inquiète dans cet exercice mais le serveur web. J'ai une application critique entièrement basée sur les sockets et j'ai encore aujourd'hui du mal à avoir quelques chose de performant et robuste et c'est souvent à cause d'apache (bon c'est sous windows ) qui rame pas mal.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    j'ai oublié de préciser que je ne voulais pas avoir besoin d'un client spécifique, voila pourquoi le web et installable avec bon nombre d'offre d'hébergeur de site donc pas d'accès total au serveur ni même à la config du serveur web

  10. #10
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Et pourquoi utiliser un serveur web pour la partie démon gérant la socket. Tu peux très bien coder ton démon en php et le lancer via une commande php sans passer par un serveur Web type Apache.

    Les gens l'oublient souvent mais php n'est pas exclusivement destiné à être utilisé avec un serveur Web.

  11. #11
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par grunk Voir le message
    C'est pas tant PHP qui m'inquiète dans cet exercice mais le serveur web. J'ai une application critique entièrement basée sur les sockets et j'ai encore aujourd'hui du mal à avoir quelques chose de performant et robuste et c'est souvent à cause d'apache (bon c'est sous windows ) qui rame pas mal.
    Oui, enfin là on parle de PHP en mode CLI bien entendu. Je vois pas bien ce qu'apache viendrait faire dans la réalisation d'un Daemon PHP

  12. #12
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Oui, enfin là on parle de PHP en mode CLI bien entendu. Je vois pas bien ce qu'apache viendrait faire dans la réalisation d'un Daemon PHP
    J'ai sous entendu le client...

  13. #13
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par rgamor Voir le message
    j'ai oublié de préciser que je ne voulais pas avoir besoin d'un client spécifique, voila pourquoi le web et installable avec bon nombre d'offre d'hébergeur de site donc pas d'accès total au serveur ni même à la config du serveur web
    Dans ce cas tu peux tout simplement oublier la création d'un daemon. Je l'avais spécifié dans mon post: c'est seulement si tu es sur un dédié. De toute manière, je doute fortement qu'un hébergeur mutualisé te permettre d'ouvrir des sockets.

  14. #14
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    reste plus que les websocket du HTML5?!

  15. #15
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est à dire que tu ne nous as toujours pas parlé de ce que tu voulais faire concrètement, on va pas pouvoir t'aiguiller sur un techno à moins que tu nous décrives complétement ton problème.

  16. #16
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    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 693
    Par défaut
    Oui, enfin là on parle de PHP en mode CLI bien entendu
    Il parlais de requête ajax au début , donc je supposais que ca devait passer par un serveur web.
    Citation Envoyé par rgamor Voir le message
    reste plus que les websocket du HTML5?!
    Me semble que c'est désactivé dans la plus part des navigateurs maintenant , à cause d'une faille dans l'API.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    je voudrais pouvoir contrôler des serveurs de jeux (Steam..) via une interface web.

    pour les websockets il faut que le serveur soit compatible websocket je crois et je ne contrôle pas le protocole du serveur de jeu.

  18. #18
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Et tes serveurs de jeux, ils sont sur une plateforme dédiée?

    Si c'est le cas, ça peut-être plus facile d'utiliser cette plateforme pour mettre en place ta solution.

  19. #19
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    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 693
    Par défaut
    Voila qui est déjà plus clair :

    un lien peut être utile : http://a-pellegrini.developpez.com/t...s/php/cstrike/

    Après si il sagit d'envoyer des commande au serveur ou de le monitorer à un instant T , on est bien loin du daemon et de son fonctionnement 24/7. Auquel cas y'a plus vraiment de souçis de performance et une requete ajax périodique pour refresh les données est tout à fait envisageable.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Citation Envoyé par grunk Voir le message
    En faite c'est pour améliorer ce très bon tuto.

    Je pense que l'idée de daemons n'est pas mauvaise, en limitant leur nombre.
    Je voudrais juste lire en permanence ce qu'il a sur la socket afin d'intercepter certains messages.

    Citation Envoyé par grunk Voir le message
    Après si il sagit d'envoyer des commande au serveur ou de le monitorer à un instant T , on est bien loin du daemon et de son fonctionnement 24/7. Auquel cas y'a plus vraiment de souçis de performance et une requete ajax périodique pour refresh les données est tout à fait envisageable.
    Tu peux expliquer un peu plus, j'ai pas saisie le rafraîchissement des données, quelles données?

Discussions similaires

  1. Lecture du livre 'Design Pattern Tete la premiere'
    Par kaneelhadji dans le forum Livres
    Réponses: 20
    Dernier message: 06/02/2012, 09h47
  2. Socket : lecture et écriture simultanée
    Par poukill dans le forum C++
    Réponses: 6
    Dernier message: 30/06/2010, 16h53
  3. Problèmes de lecture/écriture sur deux sockets
    Par Popof dans le forum Linux
    Réponses: 2
    Dernier message: 26/11/2009, 23h14
  4. Problème de lecture/écriture avec les sockets
    Par mrttlemonde dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/10/2009, 11h12
  5. [Perl] lecture/écriture simultanées sur une socket
    Par sephiburp dans le forum Programmation et administration système
    Réponses: 10
    Dernier message: 16/10/2007, 10h25

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