WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Как узнать размер базы данных MySQL через php


Прислал: Николай Рудченко [ 20.02.2008 @ 15:16 ]
Раздел:: [ Статьи по PHP ]


В этой небольшой статье вы узнаете, как получить размер вашей базы данных (БД) MySQL используя язык программирования PHP.
Для начала нам потребуется простая функция formatfilesize(), которая будет преобразовывать размер в байтах в более "читаемый вид".
<?php

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";

}

}

?>
Далее нам естественно необходимо подключиться к самой базе данных MySQL, чтобы узнать ее размер.
Определим переменную, которая будет содержать имя нашей базы данных. Замените "databasename" на имя своей базы данных:
<?php

$dbname = "databasename";

?>
Ну а теперь нам осталось главное - вычислить размер нашей БД. Это делается очень просто - необходимо просто пройтись по каждой таблице БД сложить размер данных и индекса БД:
<?php

mysql_select_db( $dbname );
$result = mysql_query( "SHOW TABLE STATUS" );
$dbsize = 0;

while( $row = mysql_fetch_array( $result ) ) {

$dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];

}

?>
Сейчас наш размер БД в байтах содержится в переменной $dbsise. Нам осталось лишь воспользваться упомянутой в начале статьи функцией formatfilesize() для форматирования этого размера (разделим его на кило-, мега-):
<?php

echo "<p>Размер базы данных составляет " . formatfilesize( $dbsize ) . "</p>";

?>
Вот, собственно, и все. Удачи!
Автор: Николай Рудченко
Источник: //www.codeguru.com.ua/


 :::::  Сергей пишет 16.08.2010 @ 17:07 
Скажите, этот способ сильно от вашего отличается и можно ли его использовать?
SELECT sum(ROUND(index_length/1024/1024,2) ) +
sum(ROUND(data_length/1024/1024,2) ) AS total_size_mb
FROM
information_schema.tables
WHERE table_schema='<Имя БД>'

Вроде одинаковые результаты получаются.

Имя:
Email:
URL

Введите сумму двух чисел девять и шесть (девять+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0119720