Action à intervalle régulier

Fermé
Laesia Messages postés 6 Date d'inscription dimanche 2 février 2014 Statut Membre Dernière intervention 10 février 2014 - 2 févr. 2014 à 17:17
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 7 févr. 2014 à 15:18
Bonjour à tous !
J'ai parcouru de NOMBREUX sites et tutoriels grâce à notre cher ami Google mais je n'ai trouvé que des réponses vagues, dont certaines parlent de Cron comme si j'étais une experte... M'enfin bref.

J'ai un site avec Wamp Server, fait en PhP et avec la base de donnée disponible avec phpMyAdmin.
Les utilisateurs disposent d'une barre d'énergie, initialement à 10.
Certaines actions diminuent la barre d'énergie de l'utilisateur (ça, je l'ai fait, c'est bon).
Mon soucis est que j'aimerais que cette barre d'énergie se restaure toutes les 10 min (par exemple) d'un point et je ne sais absolument pas comment faire, sachant que les ajouts doivent se faire sans que l'utilisateur ait besoin de toucher, ni moi d'ailleurs.

Si vous pouviez m'éclairer ça serait gentil... Merci d'avance. :)

4 réponses

robinam Messages postés 25 Date d'inscription vendredi 31 janvier 2014 Statut Membre Dernière intervention 6 février 2014 2
2 févr. 2014 à 22:17
Bonjour,

En cherchant du coté des tâches Cron tu était bien partie.
Les tâches Cron permettent d'appeler un script à intervalle régulier. Cela correspond très bien à ce que tu veux faire

Pour faire simple, cela fonctionne, en gros, comme ceci :
1) tu créé un script qui régénère x pts à chaque utilisateur
2) Tu créé une entré dans ta CronTab qui appel ce script toutes les X minutes/heures

Cela règle très bien ton problème. Par contre, cela demande d'avoir accès au Cron (donc en "général" un serveur dédié)

Sinon tu parle d'utilisation de WAMP, tu doit donc être en local sur ton Windows.
Tu trouvera surement ton bonheur du coté de la commande At https://matthieu.developpez.com/execution_periodique/#LIV

Sinon tu peux aussi essayer de passer par un service web qui gère les tâches Cron à ta place comme par exemple (j'ai pris le premier sur google) http://www.cronjobonline.com/

Par contre, sur ces solutions gratuites tu sera parfois limité en nombre de requêtes ou en délai minimum à respecter. (pas moins de 5 minutes par exemple)

Pour finir, tu as parfois la possibilité de faire le même genre de manipulation sans forcément utiliser une tâche Cron. Pour schématiser ça encore une fois, tu peux par exemple stocker la date de la dernière fois que tu as donné X pts à un joueur, et quand le joueur raffraichie la page, tu test cette date :
1) Si derniere update est de moins d'une heure, tu ne change rien
2) Si dernière update date de plus d'une heure, tu augmente de X pts l'énergie du joueur, et tu stock ta nouvelle date d'update. (et s'il y a 5 heure de passé depuis dernière update, tu augmente tout de suite de 5 * X pts)

L'avantage, tu n'utilise des ressources de ton serveur que pour des joueurs actifs (chaque heures) par contre si tu as beaucoup de joueur connecté en même temps, cela peut aussi être un désavantage et te retrouver avec des baisses de performance.

Bref, toujours compliquer de trouver le juste milieu entre la performance et la bonne technique.

D'autres techniques existent peut être, mais c'est les deux premières qui me viennent en tête.

Bon courage.
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
3 févr. 2014 à 17:07
Salut Laesia,

Personnellement, je ne pense pas que tu aies besoin de Cron ou d'un autre système de lancement de script à intervalles de temps définis.

Si la "barre d'énergie" regagne 1 point toutes les 10 minutes, il suffit de conserver la date et heure de la dernière sollicitation de ton script Php, de vérifier lors de la prochaine combien de temps s'est écoulé et d'augmenter les points de la "barre d'énergie" en conséquence.

Dans une forme plus évoluée, le site pourrait utiliser de l'Ajax pour renvoyer à partir du navigateur une information disant "je suis toujours là devant ta page" et confirmer le décompte du temps qui passe, qui serait fait côté serveur, sous réserve qu'il y ait bien quelqu'un en train de faire quelque chose sur ta page.


Dal
0
Laesia Messages postés 6 Date d'inscription dimanche 2 février 2014 Statut Membre Dernière intervention 10 février 2014
7 févr. 2014 à 14:44
Merci pour vos réponses (et désolée pour ma réponse tardive) !
Je pense que je vais m'en sortir avec tout ça et opter plutôt pour le CronTab en ligne lorsque j'aurais hébergé mon site, car je souhaite vraiment que l'énergie augmente sans aucune action de l'utilisateur ou autres.

Par contre, pour le "script", est-ce un simple fichier php ? Celui-là est-il correct pour ce que je souhaite faire ?
"
<?php

connectMaBase();

$sql = 'SELECT * FROM utilisateurs WHERE energie<10';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

while ($data = mysql_fetch_array($req)) {

$energie = $data['energie'];
$pseudo = $data['pseudo'];

$energie++;

$sql2 = 'UPDATE utilisateurs SET energie='.$energie.' WHERE pseudo="'.$pseudo.'"';
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());

}

mysql_free_result ($req);
mysql_free_result ($req2);


?>
"

Ou cela doit avoir une autre structure ?
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
7 févr. 2014 à 15:08
Bonjour,

un CRON est à Linux ce que sont les tâches planifiées sous Windows....

si vous ne pouvez pas installer un CRON sur votre serveur, vous pouvez installer un CRON sur votre PC, même un PC complètement ringard sous Windows 95 ou XP....

Donc, faites une tâche planifiée qui va exécuter le http://www.votreSite.com/crons/monCronToutesLes10Mn.php

Sous Linux, ce sera un truc de ce genre:

WGET -q http://..............

Sous Windows, installez CURL qui sera exécuté en mode commande:

CURL http://................

Et voili, voilà....


Temps de téléchargement et installation de CURL: 10 mn

Temps d'installation d'une tâche planifiée: 3 à 5 mn.....

Et vous aurez votre CRON.

A+

0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
7 févr. 2014 à 15:18
Salut mpmp93,

Bien sûr, on ne peut faire cela que sur un PC allumé et connecté en permanence, pour obtenir l'effet recherché par Laesia.


Dal
0