- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- ottimizzare Mysql con php
-
ottimizzare Mysql con php
Ciao ragazzuoli esiste uno script che mi permette di ottimizzare il db da una pagina php?
perchè molte volte trovo scomodo doverlo fare tramite db stesso.
una altra cosa come mai c'è questo problema che le tabelle hanno un surplus di dati? deriva da me o dal db stesso??
thx^_^
-
Ti puoi creare tu stesso alcune righe in php che aprono la connessione e fanno l'optimize delle tabelle. Sono poche righe di codice.
Le tabelle hanno un surplus di dati in caso di cancellazioni in quanto al momento del delete i dati non vengon fisicamente cancellati ma solo flaggati come "deleted". Vengono poi riutilizzati da nuovi inserimenti (e quindi non si perde spazio)
-
non so creare quelle poche righe nel senso che non so che funzione o altro adoperare^_^
-
-
[php]
<?
$host = "host_database";
$user = "username";
$pass = "password";
$db_name = "nome_del_database";$db = mysql_connect($host, $user, $pass);
mysql_select_db($db_name, $db);echo "Ottimizzazione DataBase in corso...";
$SQL = "OPTIMIZE TABLE ";
$result = mysql_list_tables($DATABASE);
$i = 0;
while ($i < mysql_num_rows($result)) {
$name_table = mysql_table_name($result, $i);
echo "Ottimizzazione tabella: $name_table .....<BR>";
$SQL .= $name_table;
$SQL .= ",";
$i++;
}
$SQL = substr($SQL,0,strlen($SQL)-1);
$result_set = mysql_query($SQL);
mysql_free_result($result_set);?>
[/php]a chiunque servisse^_^
-
[php]
<?
$host = "host_database";
$user = "username";
$pass = "password";
$db_name = "nome_del_database";$db = mysql_connect($host, $user, $pass);
mysql_select_db($db_name, $db);echo "Ottimizzazione DataBase in corso...";
$SQL = "OPTIMIZE TABLE ";
$result = mysql_list_tables($db_name);
$i = 0;
while ($i < mysql_num_rows($result)) {
$name_table = mysql_tablename($result, $i);
echo "Ottimizzazione tabella: $name_table .....<BR>";
$SQL .= $name_table;
$SQL .= ",";
$i++;
}
$SQL = substr($SQL,0,strlen($SQL)-1);
$result_set = mysql_query($SQL);
mysql_free_result($result_set);?>
[/php]ragazzi dopo aver sistemato lo script per un errorino ora mi trovo questo errore:
il valore dato per mysql_free_result() non è giusto/corretto.
qualcuno può controllarlo? thx^_^
-
$db = mysql_connect($host, $user, $pass);
deve essere così:
$db = mysql_connect($db_host, $db_user, $db_pass);
cmq il resto mi sembra sia corretto xchè l'ho provato e funziona.
-
$db = mysql_connect($host, $user, $pass);
deve essere così:
$db = mysql_connect($db_host, $db_user, $db_pass);
E perché?
-
massy puoi verificare se funge? ti prego perchè a me nn va
ma che dici? ti rendi conto che così facendo imposterei variabili inesistenti?:D
a buon rendere
-
ah già... un lapsus, è che io sn abituato ad usare quelle variabili x quei dati. cmq l'ho provato e funziona!
-
tu dici che funge ma a me non ottimizza nada....:S sei sicuro di ciò che dici?
-
Puoi fare una prova, prima della mysql_query fai:
echo $SQL;
E vedi cosa ti scrive, poi, se ti sembra corretto, lo vai a scrivere in phpmyadmin e vedi cosa ti risponde e se effettivamente fa quello che ti aspetti!
-
Prova questo script:
<?
if (!ini_get('safe_mode')) {
set_time_limit(2400);
}
$host="localhost";
//oppure $host="192.168.0.1";
$user ="nome utente amministratore db";
$pass = "password utente";
$DB_name="nome del database da ottimizzare";
$msg="";
$link = mysql_connect($host,$user,$pass);
if ( ! $link ) die("Errore ...impossibile connettersi a MYSQL");
if([EMAIL="!@mysql_select_db($DB_name,$link"]!@mysql_select_db($DB_name,$link[/EMAIL])) 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 ";
$result= mysql_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;
?>Io lo uso da tempo e funziona
Ciao cirpack