JeuWeb - Crée ton jeu par navigateur
[Réglé] Cron - 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églé] Cron (/showthread.php?tid=1593)



[Réglé] Cron - Joojo - 15-08-2007

Bonjour à tous, j'ai voulu faire un système de compte à rebours en js et php pour mes pa et pm mais je n'y arrive pas, mais j'ai souvent entendu parler de Cron qui permet d'exécuter des taches automatiquement.

Donc je voulais savoir ce qu'était un cron? ou le trouves-ton? c'est un logiciel, un programme, un site?

J'ai cherché sur Google mais à part la définition de wikipedia bah euh.. j'ai pas trouvé.

Merci.


RE: Cron - phpgamer - 15-08-2007

Les crons permettent d'exécuter des scripts automatiquement et à intervalles réguliers. Dans les jeux en lignes, il est le plus souvent utiliser pour mettre à jour les ressources des joueurs, leurs tours, leurs déplacements, etc...
Le plus simple est de t'inscrire sur le site Webcron, qui est gratuit et te permet de gérer autant de crons que tu veut Wink

Pour un compte à rebours, tu n'aura pas besoin de crons, un simple script en js (pour que ce compte à rebours soit instantanée) et en PHP (afin de faire les conditions, les requetes sql, etc...).
Par contre, tu pourra utiliser un crons pour exécuter un script qui vérifiera les comptes à rebours terminé.


RE: Cron - Loetheri - 15-08-2007

Tu dis avoir été sur Wikipédia.
Tu y as été mais tu n'as pas du lire.
Wikipédia a écrit :cron (dérivé de chronographe[1]) est le nom d'un programme qui permet aux utilisateurs des systèmes Unix d'exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l'avance, ou selon un cycle défini à l'avance.

Donc oui, il s'agit d'un programme. Il s'utilise sous les systèmes Unix (comme Linux). Comme dit dans la définition, il permet d'exécuter des scripts automatiquement à un moment donné (une heure donnée plutôt (et non pas un évènement du genre quand je clique sur 3615 TF1))).

Maintenant, je ne sais pas pourquoi tu as besoin d'un tel système mais personnellement, je crois que tu n'en as pas réellement besoin.

Pourquoi ? Parce qu'on a déjà vu une série de personnes qui veulent utiliser cron alors que d'autres solutions existent et ne nécessitent pas ce programme.

Il faut savoir que si tu n'as pas de serveur privé (ou virtuel mais je m'aventure), tu ne saura pas gérer toi-même le cron. Tu seras obligé d'utiliser des services externes tel que Wcron de Nainwak ou WebCron d'Alinea-Conseil.


RE: Cron - Joojo - 15-08-2007

Merci mais le problème c'est que mon script ne fonctionne pas comme je veux donc je cherche autre chose. En fait le problème c'est qu'on est obligé de charger la page et de ne plus y toucher et donc quand le joueur n'est plus connecté, le script ne fonctionne plus ou dés qu'il recharge la page le script se remet à zéro et cela recommence le compte à rebours. Ayant de petites bases en javascript j'ai pompé à Raoull son script et je l'ai modifié à ma sauce.

Moi ce que je voudrais faire c'est qu'il ajoute 1 pa et 2 pm toutes les X minutes, mais ça a l'air plus compliqué que je ne le croyais. Je pense que à chaque seconde il faut enregistrer le chrono dans la bdd puis le récupérer mais ça va me bouffer ma bande passante je pense.

Alors si quelqu'un pourrait me mettre sur la bonne voie :heuuu:

Moi j'ai une table id, login_membre,pa et mp.

Code PHP :
<?php 
<script language="JavaScript">
function
reste(zetime)
{
if (
zetime>0)
{
var
minutes = Math.floor(((zetime / 3600) - Math.floor(zetime / 3600)) * 60);
var
secondes = zetime - ((Math.floor(zetime / 60)) * 60);
document.getElementById("axion").innerHTML = minutes + ":" + secondes;
var
restant = zetime - 1;
setTimeout("reste(" + restant + ")", 1000);
}
else
{

<?
php
$retour
= mysql_query('SELECT * FROM pa_pm');
while (
$donnees = mysql_fetch_array($retour))
{
$login_membre = $donnees['login_membre'];
$pa_membre = $donnees['pa'];
$pm_membre = $donnees['pm'];

//Le max de pa et pm que peut avoir le joueur
$pa_max = 50;
$pm_max = 100;

if(
$pa_membre < $pa_max)
{
$nouveau_solde_pa = $pa_membre + 1;
}
else
{
}

if(
$pm_membre < $pm_max)
{
$nouveau_solde_pm = $pm_membre + 2;
}
else
{
}

mysql_query('UPDATE pa_pm SET pa = "'. $nouveau_solde_pa .'", pm = "'. $nouveau_solde_pm .'" WHERE login_membre = "'. $login_membre .'" ')or die(mysql_error());
}
?>
document.location.href = "pa_pm.php";
}
}
</script>

<?php
// le temps restant que l'on veut voir affiché dans notre compte à rebours
// en secondes !
// Cela peut être calculé à partir du resultat d'une requete dans la bdd
// par exemple $tr=$temp_de_fin - time();
$tr=600; // ici 6O0 secondes --> 10 minutes

// le div (on peut utiliser un span) où va s'afficher le compte à rebours
// qui doit posseder un nom dans l'attribut "id" pour l'utilisation du innerHTML
echo '<div id="axion">temps restant</div>';

// l'appel à la fonction javascript, où on précise donc le nb de secondes à décompter
echo '<script language="JavaScript">reste('.$tr.');</script>';
?>

Qu'en pensez-vous?[/php]


RE: Cron - Loetheri - 15-08-2007

Alors toi, tu veux tuer ton serveur SQL.
Si tu vas aller enregistrer chaque seconde le chrono pour aller le récupérer et le diminuer de un ... Wouaw ! J'espère que tu as un serveur pro et encore ...

Tu sais qu'il a reçu son premier PA et PM à tel heure et qu'il en reçoit de nouveaux tous les x minutes. Tu fais la différence entre sa dernière connexion que tu auras enregistré auparavant lors de sa précédente connexion (répétition ^^) et l'heure de maintenant. Tu calcules le nombre de PA et PM qu'il peut recevoir et tu remets à jour le moment où il a reçu ses derniers PA et PM soit maintenant.

Cela me semble nettement plus réaliste. non ?


RE: Cron - Joojo - 15-08-2007

Loetheri a écrit :Alors toi, tu veux tuer ton serveur SQL.
Moi??? nooon Confusediffle:

Merci beaucoup pour ton idée, je vais essayer dés maintenant. Smile