Kommunauty
Connexion
Inscription

[tuto] Planificateur de tâche internet


Alexou Messages : 2507

Tuto prix de Tazou pour une actualisation automatique.

Alors pour résumer, il se base (donc il a un précision lié à la présence de joueurs) Il surcharge pas du tout le serveur et tres simple a mettre en place.

Actuellement, il se base sur l'heure. (On pourra le faire évoluer sur une date précise ou par minute, à voir)

But : Pouvoir lancer une fonction interne du jeu, une requête SQL ou modifier une variable a une heure précise.

A noter que je travail toujours dessus, la c'est juste un version Beta. (j'ai vu un bug possible que je corrigerais dans la prochaine version)

N'hésitez pas a donner des idées.

Seul défaut, il utilise le moteur du jeu pour faire ses actions. Donc il est limité aux actions des joueurs. (mais je l'ai sur mon serveur depuis 5 jours et pour l'instant ca marche nickel)

Passons au tuto :

ouvrer le fichier common.php

Chercher


CheckPlanetUsedFields($planetrow);

ajouter après


EmulatecronJob(date('G'));

ouvrer le fichier includes/todofleetcontrol.php

ajouter après le dernier "include($xnova_root_path ......"


include($xnova_root_path . 'includes/functions/cronjob.'.$phpEx);

Créer un fichier cronjob.php inclus dans includes/functions/

Et mettez ceci dedans:

<?php

/**
* cronjob&#46;php by Ze Tazou (www&#46;united-gamers&#46;fr)
*
* This plugin emulate cron job
* No real cronjob, i can do this with shmop_open, etc&#46;&#46; but not the time to do this now
*
*/

function EmulatecronJob ($LocalHeure) {
global $phpEx, $xnova_root_path, $lang, $game_config, $Hourlycronjob;  

if (isset($game_config&#91;'cron_heure'&#93;)==false) {
doquery("INSERT INTO {{table}} SET  `config_name` ='cron_heure', `config_value` = '" &#46;$LocalHeure&#46;"'", 'config');
$query = doquery("SELECT * FROM {{table}}",'config');
    while ( $row = mysql_fetch_assoc($query) ) {
     $game_config&#91;$row&#91;'config_name'&#93;&#93; = $row&#91;'config_value'&#93;;
     }
}
// Tazou on forme la mise à jour de l heure si il y a un pb&#46;


if ($LocalHeure==$game_config&#91;'cron_heure'&#93;) {

if (isset($Hourlycronjob)==true) {

if (count($Hourlycronjob)) {

for ( $IDCron = 1; $IDCron < (count($Hourlycronjob)+1); $IDCron++) {
if ($Hourlycronjob&#91;$IDCron&#93;&#91;'Heure'&#93;=="*" || $Hourlycronjob&#91;$IDCron&#93;&#91;'Heure'&#93;==$LocalHeure) {
$functoexec = '';
switch ($Hourlycronjob&#91;$IDCron&#93;&#91;'Type'&#93;) {
// 1 on execute une fonction, 2 on met une valeur , 3 On exectute une requete
case 1&#58;
$functoexec = $Hourlycronjob&#91;$IDCron&#93;&#91;'Execute'&#93;&#46;"("&#46;$Hourlycronjob&#91;$IDCron&#93;&#91;'Parametres'&#93;&#46;");";
break;
case 2&#58;
$functoexec = $Hourlycronjob&#91;$IDCron&#93;&#91;'Execute'&#93;&#46;"='"&#46;$Hourlycronjob&#91;$IDCron&#93;&#91;'Parametres'&#93;&#46;"';";
break;
case 3&#58;
$functoexec = "doquery(""&#46;$Hourlycronjob&#91;$IDCron&#93;&#91;'Execute'&#93;&#46;"", '"&#46;$Hourlycronjob&#91;$IDCron&#93;&#91;'Parametres'&#93;&#46;"');";
break;

}
eval($functoexec);

}

}

}
}

// Tazou On ajoute la prochaine heure de mise à jour
if ($LocalHeure==23) {
$LocalHeuremodif=0;
} else {
$LocalHeuremodif=$LocalHeure+1;
}
doquery("UPDATE {{table}} SET `config_value` = '" &#46;$LocalHeuremodif &#46;"' WHERE `config_name` ='cron_heure'", 'config');

}


}
?>

Maintenant on va planifier les fonctions

Noter que ceci sont des exemples..

ouvrir le fichier /includes/vars.php

chercher

$reslist&#91;'build'&#93; 

ajouter AVANT

$Hourlycronjob  = array (
        //1 => array( 'Heure' => '13', 'Type' => 3, 'Execute' => 'UPDATE {{table}} SET `config_value` = 'forum_url' WHERE `config_name` ='http&#58;//www&#46;united-gamers&#46;fr/forum/viewforum&#46;php?f=62'', 'Parametres' =>'config'),
        //2 => array( 'Heure' => '*', 'Type' => 1, 'Execute' => 'StatsManuelle', 'Parametres' =>'true'),
        //3 => array( 'Heure' => '8', 'Type' => 1, 'Execute' => 'StatsManuelle', 'Parametres' =>'true'),
        
    );

Attention ceci sont des exemples,

Heure peut etre de 0 a 23 (*=toutes les heures)

Type : 1 = exécute une fonction, 2 = modifie une variable, 3 exécute une requête.

vous devez respecter (1,2,3,4..) dans l'ordre de vos planifications

dimanche 24 mai 2009

trolx Messages : 274

j'ai pas trop compris le but du tuto

jeudi 15 juillet 2010

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !