Odczytanie wielkości bazy mysql w php
W tutorialu pokażę skrypt php wyświetlający wielkość aktualnie wybranej bazy danych. Na początku łączymy się z mysql i wybieramy bazę danych. Następnie wywołujemy zapytanie SHOW TABLE STATUS, które w jednej z kolumn zwraca wielkość danych poszczególnej tabeli w bajtach oraz wielkość indeksu. Przechodzimy pętlą przez poszczególne wiersze i sumujemy wartości dla poszczególnych tabel. Na koniec wyświetlamy wynik. Wynik jest przetworzony funkcją formatBytes, aby był on bardziej zrozumiały niż wartość w bajtach.
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: '.mysql_error());
}
mysql_select_db('nazwa_bazy');
$result = mysql_query('SHOW TABLE STATUS');
$size = 0;
while($row = mysql_fetch_array($result)) {
$size += $row['Data_length'] + $row['Index_length'];
}
echo 'Wielkość bazy danych: '.formatBytes($size);
function formatBytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);
return round($bytes, $precision).' '. $units[$pow];
}
