Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2011, 16h11   #1
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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?
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h17   #2
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
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.
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h44   #3
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 18h05   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 05h58   #5
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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.
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 08h32   #6
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h33   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 11h04   #8
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h10   #9
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h13   #10
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
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.
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 11h15   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h23   #12
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
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...
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h25   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h52   #14
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
reste plus que les websocket du HTML5?!
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h13   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h25   #16
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
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.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h56   #17
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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.
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 14h05   #18
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
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.
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 14h06   #19
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 14h58   #20
Invité régulier
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 6
Points : 6
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?
rgamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h26.


 
 
 
 
Partenaires

Hébergement Web