Code erreur: serverload : comment s'assurer de ne plus avoir cette erreur
Un article de Wiki Maximus CMS.
Sommaire |
Fonction _serverload en détail
Tout d'abord, cette modification n'est à effectuer que sur une version antérieure à la version du 01 juillet 2007.
A quoi sert cette fonction ?
Tout simplement à comptabiliser le nombre de pages vues par heure, et uniquement ceci.
Cette fonction est elle fiable et supporte t elle la charge ?
Oui, si celle ci est bien à jour. Elle est en application sur un site internet affichant en moyenne 10000 pages vues par heures sans rencontrer un quelconque plantage.
La fonction en elle même
Maximus est, depuis ses débuts, doté d'une fonction nommée serverload qui calcule le nombre de pages vues par heure.
Seulement la fonction initiale issue d'un script pour phpnuke qui malheureusement a été plus ou moins bien pensée à l'époque et qui s'est révélée très vite défaillante.
Un patch nommé serverload a été mis à disposition sur les forums à cette adresse: www.php-maximus.org/Maximus_CMS_postlite_3625_serverload.html
Mais tachons de résumer un peu comment patcher efficacement cette fonction _serverload !
Tout d'abord la fonction en elle même: - elle se situe dans le fichier kernel/utility.php - elle doit scrupuleusement être comme ci-dessous:
// Additif 24-08-2004 - séparation du calcul et mise en `` du calcul
function serverload() {
global $max_time ;
$max_time = $GLOBALS['db']->XMFnum($max_time);
$duration = '3600';
$calcul = $max_time - $duration;
if ( @ empty( $_SESSION['serverload'] ) ) {
$sql = "DELETE FROM `".TABLE_SERVERLOAD."` WHERE `hours` < '$calcul' " ;
if ( !($result = $GLOBALS['db']->sql_query($sql)) )
{ query_die(KERNEL_ERROR, 'Could not DELETE _serverload ', , __LINE__, __FILE__, $sql);}
@ $_SESSION['serverload'] = '1' ;
}
$sql = "INSERT INTO `".TABLE_SERVERLOAD."` (`id`, `hours`) VALUES (NULL, '$max_time') ";
if ( !($result = $GLOBALS['db']->sql_query($sql)) )
{ query_die(KERNEL_ERROR, 'Could not INSERT _serverload ', , __LINE__, __FILE__, $sql);}
$sql = "SELECT `id` FROM `".TABLE_SERVERLOAD."`";
if ( !($result = $GLOBALS['db']->sql_query($sql)) )
{ query_die(KERNEL_ERROR, 'Could not SELECT _serverload ', , __LINE__, __FILE__, $sql);}
$num = $GLOBALS['db']->sql_numrows ($result);
$GLOBALS['db']->sql_freeresult ($result);
return $num;
}
Ensuite cette fonction faisant appel à une table MySQL nommée elle aussi _serverload, vous devez vous assurez que cette table corresponde bien à celle ci:
CREATE TABLE IF NOT EXISTS `nuke_serverload` ( `id` int(11) NOT NULL auto_increment, `hours` int(10) NOT NULL default '0', PRIMARY KEY (`id`), KEY `hours` (`hours`) ) ;
Si la table ***_serverload ne correspond pas à la fonction liée serverload, vous aurez automatiquement autant de messages d'erreurs que de pages vues dans votre journal de débug.
Si vous rencontrez une erreur de ce type dans votre journal de débug, c'est uniquement par le fait que votre fonction ou votre table ne correspond pas à celles citées ci dessus.
Comment mettre à jour son Maximus
Ouvrir le fichier kernel/utility.php Remplacer la function serverload de votre fichier par celle ci dessus cités. Ouvrir votre gestionnaire de bases de données, phpmyadmin très souvent, supprimez votre table _serverload actuelle et insérez la table ci dessus.
Comment désactiver cette fonction
Rendez vous dans votre administration, onglet Configuration avancée, puis désactivez l'option Afficher le nombre de pages vues par heure
La fonction est elle fiable ?
Oui, bien évidemment et ce UNIQUEMENT si vos avez bien effectué ces modifications. Bien évidemment ces modifications sont présentes dans le pack de Maximus, depuis le 01 juillet 2007 ! vous n'aurez donc pas à effectuer ces modifications si vous n'avez pas modifié le kernel ( fichier utility.php ) ou la table _serverload
Patch disponible dans les forums
www.php-maximus.org/Maximus_CMS_postlite_3625_serverload.html
ATTENTION, il est très fortement recommandé de préférer la modification citée sur cette page, en effet le patch cité pourrait vous causer d'autres effets si votre maximus n'est pas à jour ( version du 01 juillet 2007 )
Cyril 11:09, 1 février 2008 (CET)

