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)