Joomla.it Forum

Non solo Joomla... => Database => : leoci 27 Oct 2008, 14:11:31

: Migliorare le prestazioni del database di Joomla!
: leoci 27 Oct 2008, 14:11:31
E' risaputo che molto spesso il degrado delle prestazioni di un sito realizzato con joomla può essere condizionato dalla necessità di ottimizzare le tabelle del database Mysql.
In effetti, ottimizzando il database tramite Phpmyadmin, la differenza si vede eccome. Però per effettuare questa operazione è necessario connettersi con Phpmyadmin, autenticarsi, selezionare tutte le tabelle, dare il comando di ottimizzazione, disconnettersi, ecc..
Troppi click!
Allora ho cercato su internet qualcosa che non fosse un'estensione, per non appesantire eccessivamente il sito, e che permettesse di ottimizzare velocemente il database. Alla fine ho trovato un semplice script in php, che una volta uploadato sul server e protetto eventualmente con una password, permette di effettuare l'ottimizzazione semplicemente richiamando http://www.miosito.it/script.php.
Lo script è questo, spero che possa tornare utile anche ad altri.
:
<?php
if (!ini_get('safe_mode')) {
set_time_limit(2400);
}
$host="localhost";
$user ="nome_utente";
$pass "password";
$DB_name="nome_database";
$msg="";
$link mysql_connect($host,$user,$pass);
if ( ! 
$link ) die("Errore ...impossibile connettersi a MYSQL");
if(!@
mysql_select_db($DB_name,$link)) die("Errore ...impossibile connettersi al DataBase".mysql_error());
echo <<<EOT
<html><head><title>Ottimizzazione Tabelle</title>
<STYLE TYPE="text/css">
BODY{BACKGROUND-COLOR: #dfdfd1;FONT:BOLDER 14px VERDANA,ARIAL,MS Sans Serif;color:red;}
</STYLE>
</head>
<body >
<center>
<h3>Ottimizzazione Tabelle<br> 
$DB_user</h3>
<p>
EOT;
$query="SHOW TABLE STATUS FROM $DB_name ";
$resultmysql_query ($query) or die ("errore : "mysql_error() );
if(
mysql_num_rows($result)){
while(
$row=mysql_fetch_array($result)){
$query='OPTIMIZE TABLE '.$row[0];
$result1=mysql_query($query) or die("errore : "mysql_error()."\n");
$row1=mysql_fetch_row($result1);
if(
$row1[2]!='status') echo "Tabella: $row[0] <br> - $row1[2]$row1[3]<br>";
else echo 
"Tabella: $row[0] O.K.<br>";
}
}
echo <<<EOT
<script>
alert("Ottimizzazione O.K.")
self.close()
</script>
EOT;
exit;
?>

Un saluto a tutti
: Re: Migliorare le prestazioni del database di Joomla!
: lumacarom 28 Oct 2008, 13:45:55
Ottimo! Grazie per il suggerimento. Faccio subito un copia e incolla.

Ciao
: Re:Migliorare le prestazioni del database di Joomla!
: programmigratis 26 May 2009, 22:32:00
Come posso proteggere il files script.php con una password?
: Re:Migliorare le prestazioni del database di Joomla!
: lumacarom 27 May 2009, 08:34:01
Devi inserire altro codice che protegga quello di ottimizzazione da intrusioni illecite.

In altre parole al primo accesso devi rendere visibile solo un form che richiede la password e, a "valle" dell'autenticazione, mandi in esecuzione il resto dello script.

Tipo una roba del genere:

la prima volta entri così

if(isSet($_GET['task'])) $task=$_GET['task']; else $task='login';
if($task=='login') {
//Codice html che genera il form per l'invio della password
                   }

e la seconda

$if($task=='autenticazione') {
$password=$_POST['password'];
if($password=='password') {
//Codice di ottimizzazione
                          } else echo 'Autenticazione fallita';
                             }

P.S. Spero che tu mastichi un po' di php...


: Re:Migliorare le prestazioni del database di Joomla!
: enricomainero 05 Dec 2011, 17:18:10
Ciao ragazzi,

ho trovato questa discussione. E' ancora valida la strada che suggerisce leoci?

Oppure è consigliabile (come ho letto in un'altra disussione):

      1) Entrare nel proprio pannello mysql.
      2) Selezionare il db sul quale è presente il vostro joomla
      3) Scorrere tutta la pagina di mysql e selezionare in fondo alla pagina la voce: Seleziona Tutti
      4) Selezionare Ottimizza tabella nel menu a tendina a sinista del pulsante Seleziona Tutti
      5) Attendere che tutte le tabelle vengano ottimizzate.
      6) Avrete così il resoconto delle tabelle ottimizzate, ora potete chiudere il vostro pannello mysql.

Oppure ancora è consigliabile istallare questo componente http://extensions.joomla.org/extensions/648/details

Grazie
: Re:Migliorare le prestazioni del database di Joomla!
: mau_develop 05 Dec 2011, 17:56:11
lascia perdere lo script :) è illogico! siccome ci sono troppi click devo uppare tutte le volte un file.... non voglio nemmeno considerare l'idiozia di lasciare sul server quel file.

il modo corretto è farlo con phpmyadmin
1) Entrare nel proprio pannello mysql.
      2) Selezionare il db sul quale è presente il vostro joomla

      3) Scorrere tutta la pagina di mysql e selezionare in fondo alla pagina la voce: Seleziona Tutti
-----------------------------------------------------------------------------
... mapperche?? se le tabelle sono da ottimizzare lo vedi dalla lista di riepilogo se ha dei byte in + (sulla dx) se lezioni quella tabella, vai sulla select in fondo e selezioni "ottimizza"
Solitamente sono da ottimizzare le tabelle che ricevono contenuti

Prima di smanacciare sui db si fa un backup

M.
: Re:Migliorare le prestazioni del database di Joomla!
: enricomainero 05 Dec 2011, 21:20:10
ok grazie!!!

e invece il componente? me lo consigli?
: Re:Migliorare le prestazioni del database di Joomla!
: mau_develop 05 Dec 2011, 21:31:54
ma che è quello..un componente?

non impestate joomla di roba inutile

M.
: Re:Migliorare le prestazioni del database di Joomla!
: enricomainero 05 Dec 2011, 21:39:34
Ottima risposta :)

Grazie
: Re:Migliorare le prestazioni del database di Joomla!
: enricomainero 05 Dec 2011, 21:54:16
ti va di aiutarmi anche qui: http://forum.joomla.it/index.php/topic,151039.new.html#new

grazie