|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonsoir,
je me pose 2-3 question sur les sockets et pour cause : je ne les ai jamais utilisés ! En fait je me demande si les sockets pourraient être utile dans le cadre d'un développement d'un jeu. Je précise mes attentes : Peuvent ils être utiles pour : 1) Permettre aux utilisateurs d'avoir l'heure serveur en temps réel rafraichie toutes les x secondes (delta de 1s maxi par rapport à l'heure serveur) ? 2) Permettre l'affichage instantané sur un navigateur d'un utilisateur d'un événement provoqué par un autre utilisateur (ex: attaque, envoi d'un message, ...) ? Mon but est de surtout éviter les requêtes cycliques toutes les x secondes afin de voir si un événement s'est produit et qui sont utiles dans 10% des cas. Je cherche donc à savoir si l'envoi d'une socket utilisateur peut se répercuter uniquement sur une autre socket utilisateur par le biais du serveur ? Merci de m'éclairer |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : octobre 2004 Messages : 235 ![]() |
Pas en PHP/HTTP standard :-)
On peut le simuler avec du polling, mais ce n'est pas vraiment ce que tu cherches. |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Les sockets ne permettent pas d'envoyer aux clients connectés une information à fréquences d'intervales réguliers par exemple ?
Pas possible qu'une socket n'interfère une autre socket particulière également en encodant le paquet de tel type qu'elle incorpore le destinataire ? Je dis n'importe quoi mais quelque chose du type : Citation:
...Possible ca ? EDIT: ...polling ? |
|
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : octobre 2004 Messages : 235 ![]() |
Euh, je dirais "pas si tes clients sont des navigateurs web" ;-)
polling : http://en.wikipedia.org/wiki/Polling...ter_science%29 |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
ok merci pour les infos.
Je vais continuer à me documenter pour choisir la meilleure option pour mon projet |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Afin d'effectuer mes tests sur les sockets, j'ai besoin de faire des echos dans une boucle infinie (principe du socket quoi).
Je bosse avec wamp sous windows mais il semblerait que le flush() sous windows pose problème. j'ai testé 2-3 modifs dans php.ini mais je n'arrive toujours pas à afficher quelque chose dans une boucle infinie. Quelqu'un connait-il la solution sous windows ? Merci |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Tu passes bien par la console ?
Pour moi pas de soucis de buffer de sortie.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Je...non
Je pensais que cela revenait au même via le browser. En testant en mode console, voici ce que j'obtiens : Citation:
J'ai rajouté ca en haut de mon serveur pour être sur : Code php :
via firefox -> oui via cmd -> non J'ai donc pensé que j'avais éventuellement plusieurs versions de php installées (notamment avec zend) mais mes variables d'env sont correctement positionnées et si je vais chercher php.exe en absolu, c'est pareil. D'où cela peut il venir ? |
|||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 834 ![]() |
En mode console , le .ini utilisé n'est généralement pas le même.
Tu peux choisir le fichier de config avec php -c de mémoire. php -h te donneras toutes les infos. |
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
J'ai dis n'importe quoi !
En fait, j'ai bien, trouvé le bon fichier ini pour le mode console et l'extension était pas activé. C'est bon ca marche je vais pouvoir continuer mes tests sur les sockets merci EDIT: c'est bon ca flush bien |
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Ah non, chaque intermédiaire peut bufferiser : PHP, le serveur web, le navigateur.
Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#13 | |||||||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonjour,
je continue sur mes sockets mais je me heurte à un soucis...J'ai bien établi la connexion entre la socket client et le serveur. Maintenant, je cherche (pour tester) à envoyer toutes les 5 secondes par exemple à tous les clients connectés un message. Ce que je n'arrive à faire, c'est une boucle infinie avec un sleep inclu dedans. En soit, rien de compliqué sauf que mon serveur contient déjà une boucle imbriquée afin d'écouter les sockets entrantes... J'ai pas réussi à créer 2 boucles infinies dans une même classe et je pense pas que cela soit possible...J'ai donc cherché à instancier une nouvelle classe pour dispatcher l'événement en récupérant d'un tableau statique les sockets actives mais rien n'y fait je n'arrive pas à instancier 2 serveurs... Citation:
Mes classes : Client : Code php :
Serveur : Code php :
Dispatcher: Code php :
Quelqu'un voit-il une solution à mon problème ? Merci |
|||||||
|
|
00
|
|
|
#14 | |||||
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Citation:
Ce que je ferais... client.php : Code :
Code :
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|||||
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonsoir Séb et merci beaucoup
Effectivement ta version marche comme je le désirerais Sauf qu'elle consomme 50% de mon UC c'est le socket_set_nonblock($server) (que je ne connaissais pas) qui fait monter en charge car le while se comporte comme une "vraie" boucle infinie et le script ne dort plus sur le socket_accept()... Je vais essayer de voir si je peux pas monter une version sans monter en charge |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com