|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
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? |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
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. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
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
|
|
|
00
|
|
|
#4 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
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
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
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. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
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.
|
|
00
|
|
|
#7 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
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
|
|
10
|
|
|
#8 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
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
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
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
|
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
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. |
|
|
10
|
|
|
#11 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
__________________
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
|
|
|
00
|
|
|
#12 |
![]() ![]() Développeur Web Inscription : décembre 2006 Messages : 2 335 ![]() |
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 |
|
|
00
|
|
|
#13 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
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
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
reste plus que les websocket du HTML5?!
|
|
|
00
|
|
|
#15 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
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
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Me semble que c'est désactivé dans la plus part des navigateurs maintenant , à cause d'une faille dans l'API. |
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
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. |
|
|
00
|
|
|
#18 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
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. |
|
|
00
|
|
|
#19 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
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. |
|
00
|
|
|
#20 | ||
|
Invité régulier
![]() Inscription : avril 2009 Messages : 30 ![]() |
Citation:
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:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com