Ostatnio znajomy poprosił mnie o napisanie skryptu służącego do optymalizacji baz danych MySQL na serwerze.
Wykorzystuje on w swoim działaniu poniższą klasę. Może komuś jeszcze się przyda

<?php
/**
* optymalizacja bazy danych MySQL
* @author `Speedy` <sppeedy@poczta.fm>
* @copy (c) `Speedy` 2006
* @version 1.0
*/
class optimize_database {
/**
* identyfikator połączenia z bazą danych
*/
var $connection;
/**
* nawiązuje połączenie z bazą danych
* @param string $host nazwa hosta
* @param string $db nazwa bazy danych
* @param string $user nazwa użytkownika
* @param string $password hasło użytkownika
*/
function connect($host,$user,$password,$db)
{
if(!$this->connection)
{
die('Błąd: Nie można nawiązać połączenia z bazą danych.'); }
{
die('Błąd: Nie można wybrać bazy danych.'); }
}
/**
* zamyka połączenie z bazą danych
* @param void
* @return void
*/
function disconnect()
{
}
/**
* tworzy tablicę wielowymiarową
* ze wszystkimi wierszami w tabeli określonej zapytaniem
* klucze w tablicy, to nazwy tabel
* @param string $query zapytanie SQL
* @return array $result wynik
*/
function mysql_fetch_all($query)
{
{
{
$result[$row['Name']] = $row;
}
}
return $result;
}
/**
* Pobiera informacje o tabelach z bazy danych
* @param string $host nazwa hosta
* @param string $db nazwa bazy danych
* @param string $user nazwa użytkownika
* @param string $password hasło użytkownika
* @return array tabele wraz z informacjami
*/
function get_tables($host,$user,$password,$db)
{
$this->connect($host,$user,$password,$db);
$result = $this->mysql_fetch_all('SHOW TABLE STATUS');
return $result;
}
/**
* pobiera tabele, które powinny zostać zoptymalizowane
* @param string $host nazwa hosta
* @param string $db nazwa bazy danych
* @param string $user nazwa użytkownika
* @param string $password hasło użytkownika
* @return array $result zoptymalizowane tabele
*/
function get_overloaded_tables($host,$user,$password,$db)
{
$tables = $this->get_tables($host,$user,$password,$db);
foreach($tables as $table => $value)
{
if($value['Data_free'] > 0)
{
$result[$table] = $value;
}
}
return $result;
}
/**
* optymalizuje tabele
* @param string $host nazwa hosta
* @param string $db nazwa bazy danych
* @param string $user nazwa użytkownika
* @param string $password hasło użytkownika
* @return int $data_free ilość zwolnionego miejsca (w bajtach)
*/
function do_optimization($host,$user,$password,$db)
{
$array = $this->get_overloaded_tables($host,$user,$password,$db);
{
foreach($array as $table => $value)
{
$data_free += $value['Data_free'];
}
}
else
{
$data_free = 0;
}
$this->disconnect();
return $data_free;
}
}
?>
sposób użycia:
<?php
require 'optimize_database.class.php'; // plik z klasą
$optimize_database = new optimize_database;
$data_free = $optimize_database -> do_optimization('localhost','admin','password','bazadanych');
echo 'Optymalizacja bazy danych zakończona: odzyskano '.$data_free.' bajt(ów)';
?>
Ten post edytował Speedy 4.05.2006, 10:27:56
Sygnatura niezgodna z regulaminem.