- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- ottimizzare Mysql con php
-
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