Added the database usage statistics.
This commit is contained in:
		| @@ -327,8 +327,8 @@ function IDF_Views_Admin_getForgeSize() | ||||
|         .escapeshellarg(Pluf::f('upload_issue_path')); | ||||
|     $out = split(' ', shell_exec($cmd), 2); | ||||
|     $res['attachments'] = $out[0]*1024; | ||||
|     $res['total'] = $res['repositories'] + $res['downloads'] + $res['attachments']; | ||||
|     // TODO: now we need the db | ||||
|     $res['database'] = IDF_Views_Admin_getForgeDbSize(); | ||||
|     $res['total'] = $res['repositories'] + $res['downloads'] + $res['attachments'] + $res['database']; | ||||
|     return $res; | ||||
| } | ||||
|  | ||||
| @@ -339,9 +339,36 @@ function IDF_Views_Admin_getForgeSize() | ||||
|  */ | ||||
| function IDF_Views_Admin_getForgeDbSize() | ||||
| { | ||||
|      | ||||
|     // MySQL: SHOW TABLE STATUS FROM database;  | ||||
|     //        then sum Data_length and Index_length for each table | ||||
|     // PostgreSQL:  | ||||
|     // Directly stats the database file | ||||
|     $db = Pluf::db(); | ||||
|     if (Pluf::f('db_engine') == 'SQLite') { | ||||
|         return filesize(Pluf::f('db_database')); | ||||
|     } | ||||
|     switch (Pluf::f('db_engine')) { | ||||
|     case 'PostgreSQL': | ||||
|         $sql = 'SELECT relname, pg_total_relation_size(relname) AS size FROM pg_class AS pgc, pg_namespace AS pgn  | ||||
|      WHERE pg_table_is_visible(pgc.oid) IS TRUE AND relkind = \'r\' | ||||
|      AND pgc.relnamespace = pgn.oid | ||||
|      AND pgn.nspname NOT IN (\'information_schema\', \'pg_catalog\')'; | ||||
|         break; | ||||
|     case 'MySQL': | ||||
|     default: | ||||
|         $sql = 'SHOW TABLE STATUS FROM '.Pluf::f('db_database'); | ||||
|         break; | ||||
|     } | ||||
|     $rs = $db->select($sql); | ||||
|     $total = 0; | ||||
|     switch (Pluf::f('db_engine')) { | ||||
|     case 'PostgreSQL': | ||||
|         foreach ($rs as $table) { | ||||
|             $total += $table['size']; | ||||
|         } | ||||
|         break; | ||||
|     case 'MySQL': | ||||
|     default: | ||||
|         foreach ($rs as $table) { | ||||
|             $total += $table['Data_length'] + $table['Index_length']; | ||||
|         } | ||||
|         break; | ||||
|     } | ||||
|     return $total; | ||||
| } | ||||
|   | ||||
| @@ -8,13 +8,15 @@ | ||||
|  | ||||
| {block context} | ||||
| <div class="issue-submit-info"> | ||||
| <p><strong>{trans 'Space Usage Statistics'}</strong></p> | ||||
| <ul> | ||||
| <li>{trans 'Repository size:'} {$size['repositories']|size}</li> | ||||
| <li>{trans 'Attachment size:'} {$size['attachments']|size}</li>  | ||||
| <li>{trans 'Download size:'} {$size['downloads']|size}</li> | ||||
| <li>{trans 'Forge size:'} {$size['total']|size}</li> | ||||
| <li>{trans 'Repositories:'} {$size['repositories']|size}</li> | ||||
| <li>{trans 'Attachments:'} {$size['attachments']|size}</li>  | ||||
| <li>{trans 'Downloads:'} {$size['downloads']|size}</li> | ||||
| <li>{trans 'Database:'} {$size['database']|size}</li> | ||||
| <li><strong>{trans 'Total Forge:'} {$size['total']|size}</strong></li> | ||||
| </ul> | ||||
| <p>{trans 'The forge size does not include the database space yet.'}</p> | ||||
|  | ||||
| </div> | ||||
| {/block} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user