PHP + MiSqli узнать размер базы данных
PHP класс для определения размера базы данных
Часто при разработке приложений для взаимодействия с базой данных MySql возникает необходимость опепративно узнать её размер не через интерфейс админки, а средствами скрипта на php что бы в случае превышения лимита выполнить необходимые деёствия на сайте или сигнализировать администратору.
Здесь я привожу небольшой класс для работы с базой данных через функционал php mysqli который позволит соединится с базой данных, узнать её размер в байтах и отформатировать результат для удобочитаемости в Кб, Мб, Гб.
class bazaInfo{ public function connect(){ $db_host = 'localhost'; $db_user = 'LOGIN'; $db_password = 'PASS'; $db_name = 'BAZA NAME'; $link = new MySQLi($db_host, $db_user, $db_password, $db_name); if ($link->connect_error) { die('<p style="color:red">'.$link->connect_errno.' - '.$link->connect_error.'</p>'); } $link->query("SET NAMES 'cp1251'"); return $link; //echo "<p>Вы подключились к MySQL!</p>"; } public function formatfilesize($data){ // bytes if( $data < 1024 ) { return $data . " bytes"; } // kilobytes else if( $data < 1024000 ) { return round( ( $data / 1024 ), 1 ) . "k"; } // megabytes else { return round( ( $data / 1024000 ), 1 ) . " MB"; } } public function bazaSize(){ $mysqli=self::connect(); $sql = "SHOW TABLE STATUS"; $result = $mysqli->query($sql); $dbsize = 0; while($R = mysqli_fetch_object($result)) { $dbsize += $R->Data_length + $R->Index_length; } return self::formatfilesize($dbsize); } } // Выводим данные $bz=new bazaInfo; $size = $bz->bazaSize(); echo $size;
Функция connect() устанавливает соединение с базой данных и оперделяет кодировку.
Функция formatfilesize( $data ) форматирует числовое представление размера базы данных.
И ключевая функция bazaSize() собственно вычисляет и возвращает размер базы данных, с помощью внутренних вызовов пердыдущих функций осуществляет соединение и форматирование результата.
Подсчёт размера базы данных осуществляется суммарным значением веса каждой таблицы + индексной составляющей.
Дата публикации: