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 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 7 févr. 2014 à 15:18
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 7 févr. 2014 à 15:18
A voir également:
- Action à intervalle régulier
- Action - Guide
- Film d'action en français à télécharger - Télécharger - TV & Vidéo
- Action fans - Accueil - Guide arnaque
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Lidl action - Guide
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
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.
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.
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
3 févr. 2014 à 17:07
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
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
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
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 ?
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 ?
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 340
7 févr. 2014 à 15:08
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+
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+
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
7 févr. 2014 à 15:18
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
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