Code error: serverload : come assicurarsi di non avere più questo errore
Un article de Wiki Maximus CMS.
Sommaire |
Funzione _serverload in dettaglio
Per prima cosa fate attenzione poichè questa modifica deve essere effettuata solo susulle versioni anteriori a quella del 01 luglio 2007.
A cosa serve questa funzione ?
Molto semplicemente serve a conteggiare solo il numero di pagine viste ogni ora.
Questa funzione è leggera e sopporta bene il peso del proprio lavoro ?
Si, se è correttamente aggiornata. Questa funzione può operare tranquillamente in siti internet che visualizzano sino ad una media di 10000 pagine all'ora, senza incontrare alcun rallentamento.
La funzione in se stessa
Maximus è, sin dal suo debutto, dotato di una funzione chiamata serverload, che calcola il numero di pagine visualizzate ogni ora.
Solo la funzione originale, derivata dal codice di phpnuke e codificata per le vecchie tipologie di codice, si è purtroppo rivelata non adatta e molto spesso problematica.
Una patch chiamata serverload è stata, pertanto, messa a disposizione nel forum a questo indirizzo: www.php-maximus.org/Maximus_CMS_postlite_3625_serverload.html
Ma ora analizziamo come patchare efficacemente questa funzione _serverload !
Per prima cosa la funzione in se stessa: - è codificata nel file kernel/utility.php - deve essere scrupolosamente scrita come appresso indicato:
// 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;
}
Questa funzione richiama una tabella MySQL nominata anche essa _serverload; dovete assicurarvi che i valori della tabella corrispondano esattamente a questi:
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`) ) ;
Se la tabella ***_serverload in esercizio nel vostro database non corrisponde alla funzione serverload collegata, avrete, automaticamente nel vostro giornale di debug, tanti messaggi d'errori quante saranno le pagine visualizzate.
Se vedrete errori di questo tipo nel vostro giornale di debug, vorrà dire che la vostra funzione o la vostra tabella non corrispondono a quelle riportate qui sopra.
Come aggiornare il proprio Maximus
Aprire il file kernel/utility.php Sostituire la funzione serverload del vostro file con quella qui riportata. Aprire il vostro programma per la gestione del database, molto spesso il phpmyadmin, eliminate la tabella _serverload esistente ed installate la tabella qui riportata.
Comme disattivare questa funzione
Andate nella vostra amministrazione, menu Configurazione avanzata ==> Varie, quindi disattivate l'opzione Visualizzare il numero delle pagine viste ogni ora
La funzione è leggera ?
Si certamente, ma SOLO se avete effettuato correttamente queste modifiche.
Si rammenta che queste modifiche sono presenti nel pack di Maximus a far data dal 01 luglio 2007 ! pertanto non dovrete effettuare queste modifiche se non avete aggiornato il kernel ( file utility.php ) o la tabella _serverload
Patch disponibile nel forum
www.php-maximus.org/Maximus_CMS_postlite_3625_serverload.html
ATTENZIONE, si raccomanda moltissimo di effettuare le modifiche presenti in questa pagina in quanto, ser il vostro maximus non è aggiornato, potreste incorrere in altre complicazioni ( version du 01 juillet 2007 )

