PHP скрипт для отображения данных об использовании места на хостинге

Apr 08, 2012 00:29

Скрипт на PHP работает только на Linux, т.к. использует в работе команду 'du'.
Отображает данные о занимаемом размере для указанных папок.
Выводит общий размер файлов на диске и размер занимаемый каждой папкой сайта в МБ.
Для полноты подстчета осталось добавить подсчет размера баз данных (пока не делал).



$ROOT_DIR = '/home/u/username'; $CONFIG = array(     'ROOT_DIR' => $ROOT_DIR,     'SPACE_LIMIT_MB' => 3200,     'SITE_QUOTA_MB' => 320,     'SITES' => array(         'example.org' => $ROOT_DIR . '/public_html',         'sitedemo.ru' => $ROOT_DIR . '/sites/sitedemo.ru'     ) ); function GetDirSizeKb($dir) {     $res = exec("du -s $dir");     preg_match("/\d+/", $res, $KB);     return $KB[0]; } function GetFreeSizeKb($space_used_kb, $space_limit_kb) {     return $space_limit_kb - $space_used_kb; } function MakeHumanReadableSize($size_kbytes, $unit = 'auto') {     if ($unit == 'auto') {         $size_bytes = (($size_bytes >= (1024 * 1024 * 1024)) ? round($size_kbytes / (1024 * 1024 * 1024), 2) . " TB" : (($size_kbytes >= (1024 * 1024)) ? round($size_kbytes / (1024 * 1024), 2) . " GB" : round($size_kbytes / 1024, 2) . " MB"));     } else {         switch (strtoupper($unit)) {             case 'TB':                 $size_bytes = round($size_kbytes / (1024 * 1024 * 1024), 2) . " TB";                 break;             case 'GB':                 $size_bytes = round($size_kbytes / (1024 * 1024), 2) . " GB";                 break;             case 'MB':                 $size_bytes = round($size_kbytes / 1024, 2) . " MB";                 break;             case 'KB':                 $size_bytes = $size_kbytes . " KB";                 break;         }     }     return $size_bytes; } function GetSiteSpaceUsage($sites) {     $data = array();     foreach ($sites as $site => $site_dir) {         $data[$site] = GetDirSizeKb($site_dir);     }     return $data; } function FormatSiteSpaceUsageData($site_data) {     $html = '';     global $CONFIG;     $quota_width = 500;     foreach ($site_data as $site => $used_space_kb) {         $used_space_width = round($quota_width * ($used_space_kb / ($CONFIG['SITE_QUOTA_MB'] * 1024)));         $free_space_width = $quota_width - $used_space_width;         $html .= "" . "$site" . '' . '' . MakeHumanReadableSize(GetFreeSizeKb($used_space_kb, $CONFIG['SITE_QUOTA_MB'] * 1024), 'MB') . "" . '' . MakeHumanReadableSize($used_space_kb, 'MB') . '' . "" . "";     }     return $html; } function ShowUsedSpaceDiagram($used_size_kb, $space_limit_kb) {     $free_size_kb = GetFreeSizeKb($used_size_kb, $space_limit_kb);     $table_width = 500;     $used_width = round($table_width * ($used_size_kb / $space_limit_kb), 0);     $free_width = $table_width - $used_width;     $DATA = array(         used_width => $used_width,         free_width => $free_width,         space_used => MakeHumanReadableSize($used_size_kb, 'MB'),         space_free => MakeHumanReadableSize($free_size_kb, 'MB')     );     global $CONFIG;     $sites_data = FormatSiteSpaceUsageData(GetSiteSpaceUsage($CONFIG['SITES']));          $html = <<Занято / Свободно Всего $DATA[space_free] $DATA[space_used] $sites_data HTML;     return $html; } function CreatePage($head, $body) {     $html = <<http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> $head $body HTML;          echo $html; } function SetHeader() {     return 'Данные использования дискового пространства'; } function SetBody() {     global $CONFIG;     $used_size_kb = GetDirSizeKb($CONFIG['ROOT_DIR']);     $space_limit_kb = $CONFIG['SPACE_LIMIT_MB'] * 1024;     return 'Данные использования дискового пространства
' . ShowUsedSpaceDiagram($used_size_kb, $space_limit_kb); } function main() {     CreatePage(SetHeader(), SetBody()); } main(); ?>

php, инструмент, web, хостинг, работа

Previous post Next post
Up