Lancement de tâches cron automatiques depuis PHP

Nouveau WRInaute
Bonjour à tous,

Je poste un message sur ce forum car après maintes recherches sur le web, je ne trouve pas la solution à mon problème.
D'habitude je ne suis pas du genre à poster des messages à tout va, je trouve habituellement ce que je cherche.

Mais dans ce cas précis, je m'avoue vaincu. J'explique mon problème : je dois développer un jeu en ligne avec des timers de partout, c'est-à-dire que chaque joueur va voir se réinitialiser ses objets toutes les X heures (avec un compteur qui tourne devant ses yeux, qui remet à jour la page à la fin, et si il n'est pas connecté, le traitement se fait quand même).

Pour le compteur qui tourne, je l'ai implémenté en jquery, maintenant le gros souci c'est comment faire pour programmer les tâches cron pour chaque joueur, à la seconde près (sachant que les cron ne fonctionnent pas avec des secondes, et qu'elles sont parfois limitées en nombre de lignes, ou parfois il faut être en root pour les modifier...), en synchronisant le compteur jquery arrivé à 00:00:00 avec la tâche cron... 8O

Peut-être qu'il faut que je m'oriente vers un script de file d'attente qui tourne en permanence, je n'en sais rien. Si vous avez une idée, je vous en remercie d'avance!
 
WRInaute discret
Une session au démarrage où on stocke ... le timestamp UNIX puis on redemande via Ajax en prenant pour valeur now() toujours en timestamp ...
 
Nouveau WRInaute
ok si il est connecté c'est assez simple, mais comment faire quand il n'est pas connecté (c'est ça le plus dur) ?
d'ailleurs ça doit être unifié dans les 2 cas...
merci!
 
WRInaute impliqué
Les données doivent être actualisé sur le serveur, pas sur le client, le client c'est que de l'affichage. Sinon un ctrl maj i et hop il finit ton jeu direct.
 
Nouveau WRInaute
je reprends : [...] mais comment faire quand il n'est pas connecté (c'est ça le plus dur) ?
et surtout c'est l'objet de ma question (merci de lire le sujet avant de répondre)
 
Nouveau WRInaute
Non je ne connaissais pas, d'ailleurs je viens de trouver quelqu'un qui a le même problème que moi, merci beaucoup et bravo!
 
WRInaute passionné
Bonjour,

Tu créé une liste avec les cron à exécuter (action, heure, durée...).
C'est depuis cette liste que tu travailles.
Pour éviter de la lire en permanence, tu peux créer un système d’indexation du cron le plus proche, tu ne lis la liste que si l'heure arrive.

Tout cela doit être fait en interne, coté serveur.
Si un joueur se connecte, il ne récupère qu'une information sur le déroulement des actions. Pour ton cas, ce n'est en aucun cas avec lui que tu dois gérer tes crons.

Rod
 
Nouveau WRInaute
_Soul a dit:
Les données doivent être actualisé sur le serveur, pas sur le client, le client c'est que de l'affichage. Sinon un ctrl maj i et hop il finit ton jeu direct.
tu ne nous apprends rien, désolé de te le dire.
et en plus de ne pas lire le sujet, tu ne lis même pas les réponses des autres (il dit clairement d'utiliser le timestamp du serveur) :
buzzistic a dit:
Une session au démarrage où on stocke ... le timestamp UNIX puis on redemande via Ajax en prenant pour valeur now() toujours en timestamp ...
 
WRInaute impliqué
Je répondais pas à Buzzistic mais à toi pour te dire que c'est pas une bonne solution.

Fin bon puisque j'ai tord, regarde un while(;) + date dans une bdd.

Et si tu veux faire un truc correct tu gère tout depuis du C et tu fais des sémaphores ;)
 
Discussions similaires
Haut