Action à intervalle régulier
Laesia
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
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. :)
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. :)
A voir également:
- Action à intervalle régulier
- Action - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- Concurrent action - Guide
- Action fans - Accueil - Guide arnaque
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
4 réponses
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.
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.
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
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
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 ?
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 ?
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+
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+