|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день...
Для вычисления размера папки - нашел замечательную функцию, которая работает через exec
Вычисление происходит моментально (условно говоря).
function uf_getDirSize($dir, $unit = 'm')
{
    $dir = trim($dir, '/');
    if (!is_dir($dir)) {
        trigger_error("{$dir} not a folder/dir/path.", E_USER_WARNING);
        return false;
    }
    if (!function_exists('exec')) {
        trigger_error('The function exec() is not available.', E_USER_WARNING);
        return false;
    }
    $output = exec('du -sb ' . $dir);
    $filesize = (int) trim(str_replace($dir, '', $output));
    switch ($unit) {
        case 'g': $filesize = number_format($filesize / 1073741824, 3) . " g"; break;  // giga
        case 'm': $filesize = number_format($filesize / 1048576, 1) . " m";    break;  // mega
        case 'k': $filesize = number_format($filesize / 1024, 0) . " k";       break;  // kilo
        case 'b': $filesize = number_format($filesize, 0) . " b";               break;  // byte
    }
    
    //return ( $filesize + 0 );
    return $filesize;
    
}Имеется потребность также вычислить размер БД, и узнать кол-во таблиц в ней.
Нашел вот-такие sql-запросы вида:
//Вариант №1
SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema;
//Вариант №2
$link = mysql_connect('host', 'username', 'password');
 
$db_name = "your database name here";
$tables = array();
 
mysql_select_db($db_name, $link);
$result = mysql_query("SHOW TABLE STATUS");
 
while($row = mysql_fetch_array($result)) {
    /* We return the size in Kilobytes */
    $total_size = ($row[ "Data_length" ] + 
                   $row[ "Index_length" ]) / 1024;
    $tables[$row['Name']] = sprintf("%.2f", $total_size);
}
 
print_r($tables);Есть ли что ни будь похожее через exec для mysql - комманда?, через которую можно узнать размер БД, а также кол-во таблиц в ней?. Или только запрос к таблице information_schema...
Есть еще небольшой вопрос про таблицу information_schema - что будет если ее удалить? Или что-то в ней поменять. Работоспособность сайта будет нарушена, или нет... И всегда ли эта таблица имеется на хостинге, где работает mysql-сервер?
И наверное даже вопрос - как лучше посчитать кол-во таблиц и размер БД - что бы это было "как бы мультихостингово".
--
Спасибо.
Отредактированно Slorvengo (15.10.2013 18:25:37)
Неактивен

Slorvengo написал:
Есть еще небольшой вопрос про таблицу information_schema - что будет если ее удалить? Или что-то в ней поменять. Работоспособность сайта будет нарушена, или нет... И всегда ли эта таблица имеется на хостинге, где работает mysql-сервер?
information_schema удалить нельзя
наличие зависит от версии сервера mysql
Неактивен
Спасибо за ответ.
Значит буду спокойно использовать: 
SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema;
--
Еще раз спасибо.
Неактивен