Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008
-
21 janv. 2008 à 00:22
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
22 janv. 2008 à 09:17
Bonjour,
j'ai une tite idée en tête et j'aimerai la réaliser mais pour ca il me faudrait une sorte de Timer..
En fait j'aimerai que ma page exécute une requête SQL toutes les deux secondes. J'ai essayé avec sleep() mais ca ne fonctionne pas car les actions sont effectuées qu'à la fin de tous les sleep donc rien ne fonctionne. Et je ne veux pas faire une boucle while inifinie qui va pomper toutes les ressources surtout que plusieurs utilisateurs seront sur cette page, donc ca risque de faire exploser le serveur..
Donc y a-t-il une fonction permettant de patienter x secondes avant l'exécution d'une fonction ?
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 21 janv. 2008 à 08:02
A mon avis, faut que tu utilises cron (ou webcron.org). Ceci dit, le pas étant de 60 minutes, soit tu crées 1800 réplicats de ton scripts, soit soit tu optimises en te disant que tu peux boucler 15 fois avant le timeout et faire donc 120 réplicats de ton script ou encore tu utilises une variante pour outrepasser le timeout comme http://www.phpcs.com/codes/EXECUTER-SCRIPT-DELA-TIMEOUT-PHP_45336.aspx et, en faisant tout de même gaffe à ne pas vampiriser toutes tes ressources, tu passes à des boucles de 60 itérations par exemple, ce qui descend à 30 le nombre de tes réplicats.
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 21 janv. 2008 à 08:48
Salut,
ca reste quand meme du lourd étant donné que beaucoup de visiteur pourront se trouver sur cette page en même temps et que je dois faire ça à un autre endroit du site... Ne serait-il pas plus "optimisé" de faire un refresh de la page toute les 2 secondes ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 11:39
Yop :)
En fait ca va dépendre du type de tache à effectuer.
Si cette tache doit etre faite obligatoirement toutes les 2 secondes, même sans visiteurs, ca va être dificile.
La plupart des services cron (webcron) ont un taux d'erreur de 5 minutes (donc quand tu demande pour 18.00, ca peut-etre 17.55 ou 18.05). Donc si tu veux à la seconde près, c'est pas possible.
Si la commande doit s'executer de temps en temps, ce que je faisais perso, c'est des frames avec une invisible, qui executait ma requete, dedans tu peux y mettre un timer en javascript qui va t'executer tous les x temps un rafraichissement par exemple (ou l'appel d'un fichier php par xmlhttprequest) et c'est bon. Seul inconvénient, il te faut des visiteurs :p
Essaye de détailler plus ton probleme histoire de voir quel est la meilleure solution :)
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 21 janv. 2008 à 19:54
Salut,
en gros, c'est un combat entre deux visiteurs. Ils sont dans la même pièce et ils jouent l'un contre l'autre. Donc quand un tape, il doit vérifier si l'autre à taper pour voir qui frappe le plus fort et remporte la manche, il faut donc bien un petit script qui vérifie toute les deux secondes, une fois qu'un type a tapé si l'autre a tapé. La vérification se fait par une requête SQL qui vérifie si le coup est présent dans la base de données.
Si pas de coup, refresh, sinon affichage du résultat...
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 20:31
c'est du super lourd alors ! :/
Parce que faire une requete sql toutes les deux secondes pour seulement 2 visiteurs, tu va bombarder ton serveur de requete :/
Mais bon en meme temps je ne vois pas d'autres solutions :p
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 21:36
Je verrai bien du flash mais c'est pareil au final, tu envoie une requete au serveur :/
Honnetement là je vois pas, j'ai un pote qui fait un jeu ou il faut en permanence envoyer des requetes, et c'est ce qu'il fait...
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 21 janv. 2008 à 21:57
J'ai pensé au flash, mais j'ai une hésitation... J'hésite à l'apprendre en fait...
Est-ce plus adapté ? Dans le sens que, voici les problèmes que j'ai :
Tout d'abord cette histoire de rafraichissement : est-ce que Flash possède une sorte de fonction permettant de faire un timer sans que la page soit rechargée sans cesse ?
Ensuite, est-ce que Flash sait détecter lorsque l'utilisateur quitte l'animation. Dans le sens que si un joueur sort de la partie, c'est directement l'autre qui gagne, donc il faut que l'autre utilisateur soit averti que l'autre joueur a quitté le script, le plus simple serait donc de supprimer directement une donné dans la base de données lors du départ du joueur, est-ce possible de le détecter avec Flash ?
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 22:34
En fait c'est possible avec flash, mais pour pouvoir connaitre l'état entre les deux joueurs, il faudra quand meme faire des requetes sur le serveur, c'est plus flexible que javascript (pas de rafraichissement, savoir quand un des joueurs clique, quitte, etc) mais par contre c'est toujours pareil pour les requetes ! :/
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 21 janv. 2008 à 23:23
Hello,
on peut savoir en flash si un utilisateur a quitté le flash ? Comment ?
Moi je ne le gèrerais pas comme ça : gestion en javascript et comptage des points à la fin. Au bout d'un certain temps (bien plus de 2 secondes), une requête ajax pour mettre à jour ta base de données. Tu peux très bien détecter en js qui n'a pas frappé depuis trop longtemps et le déclarer perdant. Bref, je ferais mes requêtes uniquement pour comptabiliser les points : js te sert à gérer la période "interactive" (sans raffraichissement d'ailleurs).
Apres ca dépends du type de jeu pour les requetes, si c'est connaitre la position d'un gars pour lui envoyer une flechete (par exemple), faire une requete toutes les 2 secondes, c'est déjà trop lent !
Mais si c'est savoir si quelqu'un à appuyé sur un bouton d'une réponse à une question, c'est autre chose..
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 22 janv. 2008 à 02:03
Ué je viens de me mettre un peu au flash et j'ai déjà réussi à faire 2-3 trucs, je pense que c'est la technologie que j'utiliserai. Maintenant pour les requêtes je n'ai de toute façon pas le choix, je vois pas comment l'animation pourrait être au courant d'un changement d'état.
La seule solution que je vois c'est une façon de lier les deux animations ensemble (des deux joueurs) et que celles-ci communiquent directement entre elle avec des sockets, mais je n'ai pas la moindre idée quant à la possibilité de réalisation de cela...
D'un autre coté, les parties ne duront pas très longtemps, donc les requêtes, c'est peut être pas le problème principale. Je vais tester ainsi et je verrai les performances sur un serveur Free et si ca ne va pas, je reviendrai surement t'embêter :p
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 22 janv. 2008 à 02:07
Je n'avais pas vu ton post malalam.
Ta solution me semble un peu compliquée pour un néophyte dans mon genre... Je vais dans un premier temps creuser du coté de flash avec juste cela. Maintenant j'entend de plus en plus parler d'Ajax, il serait donc interessant de fouiller de ce coté là aussi. Je vais un peu essayer dans toutes les directions pour voir un peu quelle est la meilleure.