JeuWeb - Crée ton jeu par navigateur
[Résolu] Tâche Cron + système de ressource (script) - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Tâche Cron + système de ressource (script) (/showthread.php?tid=6357)

Pages : 1 2 3 4


[Résolu] Tâche Cron + système de ressource (script) - KyKy83 - 27-08-2012

Bonjour à toutes & à tous,

Ceci est mon premier message sur ce forum.

Je vous explique mon problème :

Je suis actuellement sur un projet de création d'un jeu par navigateur.
J'avance relativement bien mais je me trouve bloqué devant une chose : le fait que les ressources des joueurs augmentent en fonction du niveau de leur constructions. (par exemple, un joueur ayant un champs de blé lvl 10 gagnera 1000 unités de blé toutes les heures.

Pour résoudre ce problème, j'ai eu l'idée d’exécuter un script php avec une Tâche Cron.
Or, j'ai eu la mauvaise surprise de voir, lors de la première exécution que le système de Session n'était pas pris en compte.

J'ai donc contacter le support de mon hébérgement pour avoir une réponse à mon problème.
Voici la réponse :



Citation :Pour que votre tâche cron prenne en compte vos sessions vous devez voir ça directement dans votre code source.


Quelqu'un aurais une idée de comment faire s'il vous plait ?

Cordialement, Kylian.


RE: Tâche Cron - djidi - 27-08-2012

Si tu essaie d'avoir la session d'un utilisateur via une tache cron, c'est normal que ca ne fonctionne pas.
La session est liée à l'utilisateur courant, donc le script Cron n'y a pas accès.

Pour que ca fonctionne, le mieux serait que tu regardes pour chaque joueur quel est le niveau de son champ de blé en base de données (tu l'as forcément stocké quelque part) et que tu leur fasse gagner leur blé en conséquence.


RE: Tâche Cron - Sephi-Chan - 27-08-2012

La session n'a de sens que dans le contexte d'une requête Web : une tâche lancée par le serveur ne peut pas avoir d'utilisateur courant.

Comment enregistres-tu tes crons ? Que font-il exactement ?


RE: Tâche Cron - niahoo - 27-08-2012

Tu as fais quoi jusqu'à présent pour accéder à ta session depuis ton CRON ?

Tu te rends compte que la session est gérée généralement grâce à un cookie stocké sur le navigateur du visiteur. Quand tu lances une tache CRON en PHP, $_GET, $_POST, $_SESSION sont vides : il n'y a pas eu de requête.

haha salut les gars


RE: Tâche Cron - KyKy83 - 27-08-2012

Bonjour,

Oui, je n'avais effectivement pas pensé à tout cela, merci de vos réponses pour le moment.

Mais comment pourrais je faire alors pour le système de ressources ?

Pour répondre à la question de Djidi, oui, les level des bâtiments, par exemple champs de blé, sont stocké dans la base de donnée.

Mais comment pourrais je faire pour donner à chaque joueurs leurs ressources toutes les heures ?


Petit edit : je ne m'y connais pas trop trop encore en 'timestamp' etc. J'ai beaucoup vu sur ce forum l'utilisation de ces fonctions mais pas encore bien compris.


RE: Tâche Cron - djidi - 27-08-2012

Il te suffit de faire une requête qui récupère le niveau du batiment de chaque joueur et pour chacun leur donne leurs ressources.
C'est juste un simple SELECT, un calcul pour le nombre de ressources et un UPDATE.


RE: Tâche Cron - php_addict - 27-08-2012

(27-08-2012, 10:10 AM)KyKy83 a écrit : Mais comment pourrais je faire pour donner à chaque joueurs leurs ressources toutes les heures ?

il y a pas mal de sujets à ce sujet sur ce forum, une petite recherche? lit tout ces topics et pose tes questions si tu ne comprends pas.

++


RE: Tâche Cron - KyKy83 - 27-08-2012

Dans ce cas elle est faite cette requête, car j'ai un fichier 'ressources.php' avec 12 requêtes différentes, qui rajoute le nombre d'unités de blé pour chaques niveaux (avec un if, et des elseif)

Mais comment faire pour que ce script soit exécuté toutes les heures par exemple sans que le joueur s'en rende compte ?

Justement Php_addict, je pose ici car je n'ai pas très bien compris le système de timstamp ^^


RE: Tâche Cron - Sephi-Chan - 27-08-2012

Tu peux faire une tâche cron qui tourne toutes les heures et qui boucle sur tous les joueurs. Pour chaque joueur, tu calcules les ressources à donner et tu modifies la base en conséquence.

Ce n'est pas le top des solutions, mais je pense que c'est ce que tu peux faire de mieux avec un serveur mutualisé.


RE: Tâche Cron - KyKy83 - 27-08-2012

Citation :Tu peux faire une tâche cron qui tourne toutes les heures et qui boucle sur tous les joueurs. Pour chaque joueur, tu calcules les ressources à donner

Enfaite, sur ma page ressources.php, j'ai un include pour inclure mon système de session, si j'enleve cet include, logiquement sa devrais marcher et sa ferais pour tous les joueurs non ?

Et donc la restriction : WHERE pseudo = '".$_SESSION['identifiant']."' dans mes requêtes je l'enlève logiquement.