Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день...
Для вычисления размера папки - нашел замечательную функцию, которая работает через 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;
--
Еще раз спасибо.
Неактивен