О проектеГостеваяКарта сайта

Предложишь лучшее решение - получишь 100 рублей!

Подсчет размера базы данных MySQL и вывод ее пользователю

Была выплата!!!

Задача: посчитать размер базы данных и вывести ее пользоввателю.

Решение

Решение, предложенное нашим пользователем Tchk
За что он и получил 100 рублей Well
PHP

<?
mysql_connect("localhost", "test", "testpass");
mysql_select_db("test");
 
$query= 'SELECT ROUND((SUM(DATA_LENGTH)+SUM(INDEX_LENGTH))/1024/1024,2) AS size
        FROM information_schema.tables WHERE table_schema = "test"'
;
$itemmysql_fetch_array( mysql_query( $query ));
echo 'размер БД составляет: '.$item['size'].' Mb';
?>
 

PHP

<?php
$db = mysql_connect ("localhost","root","")// подключаемся к БД
        mysql_select_db("dbname",$db);            // dbname - имя базы данных
$result = mysql_query( "SHOW TABLE STATUS" );
$dbsize = 0;
        while( $row = mysql_fetch_assoc( $result ) ) 
                $dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];
 
echo "Размер базы данных составляет " . formatsize( $dbsize );
 
function formatsize ( $size ) {
$filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    return $size ? round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 Bytes';     
}
?>
 

Источник: http://snipcode.ru Автор: SnipCode.ru

Демо работы функции

Для примера, посчитаем размер базы данных нашего сайта

Размер базы данных составляет 356.18 MB
Pазмер БД составляет: 356.18 Mb

Рейтинг:

Теги: MySQL БД размер БД

Если вы знаете более оригинальное, красивое, ЛУЧШЕЕ решение этой задачи, у вас есть шанс заработать 100 рублей!!! Если ваше решение будет признано лучшим, деньги ваши! Мы гарантируем выплату!

Всего 2 комментария

< !-- @form -- >

Подписаться на новые комментарии?

%form_captcha%

*Обзазательны для заполнения

PHP

 

Последние комментарии
  • phpguru

    Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
    $str = iconv_strlen($str,'UTF-8');
    Я так считаю!
    13-12-2013 в 12:59:38 ID# 454 посмотреть...


  • SnipCode.ru

    Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
    13-12-2013 в 13:02:55 ID# 455 посмотреть...


  • Сергей

    поторопился, так надо в конце, пардон.
        return $v['pass'];
        }
    return FALSE;
    }

    02-12-2013 в 23:33:41 ID# 377 посмотреть...


  • Сергей

    Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.
     
    function search($array,$login)
    {
       foreach ($array as $k=>$v)
        if($v['login'] == $login){
        return $v['pass'];
        }
    }
    return FALSE;
    Так, на минутку.
    Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

    02-12-2013 в 23:33:41 ID# 376 посмотреть...


  • Пабло

    Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
    11-11-2013 в 17:04:39 ID# 207 посмотреть...


  • SnipCode.ru

    ну...вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
    11-11-2013 в 17:07:06 ID# 208 посмотреть...


  • Пабло

    Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?
     
    Мне нужна система рейтинга точно такая же как у вас=)
    11-11-2013 в 17:10:56 ID# 209 посмотреть...


  • KorniloFF

    Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
    Вот код, обрезающий до последней точки:

    PHP

    $title= preg_replace("/([\s\S.]+)\.\w+$/","$1",$str)
     

    10-11-2013 в 10:45:29 ID# 205 посмотреть...


  • Виктор

    Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
    Спасибо!
    30-09-2013 в 20:34:07 ID# 204 посмотреть...