@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Move "scripts/sql/probe.php" to "bin/storage probe"

Summary: This makes it namespace/database/connection aware and a little easier to find. Also use pht() / PhutilConsole.

Test Plan: Ran `bin/storage probe`.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D6341

+81 -53
+1
scripts/sql/manage_storage.php
··· 102 102 new PhabricatorStorageManagementDestroyWorkflow(), 103 103 new PhabricatorStorageManagementDumpWorkflow(), 104 104 new PhabricatorStorageManagementStatusWorkflow(), 105 + new PhabricatorStorageManagementProbeWorkflow(), 105 106 new PhabricatorStorageManagementUpgradeWorkflow(), 106 107 ); 107 108
-53
scripts/sql/probe.php
··· 1 - #!/usr/bin/env php 2 - <?php 3 - 4 - $root = dirname(dirname(dirname(__FILE__))); 5 - require_once $root.'/scripts/__init_script__.php'; 6 - 7 - $data = array(); 8 - 9 - $conn_r = id(new PhabricatorUser())->establishConnection('r'); 10 - $databases = queryfx_all($conn_r, 'SHOW DATABASES'); 11 - foreach ($databases as $database) { 12 - $name = head($database); 13 - queryfx($conn_r, 'USE %C', $name); 14 - $tables = queryfx_all( 15 - $conn_r, 16 - 'SHOW TABLE STATUS'); 17 - $tables = ipull($tables, null, 'Name'); 18 - $data[$name] = $tables; 19 - } 20 - 21 - $totals = array_fill_keys(array_keys($data), 0); 22 - $overall = 0; 23 - 24 - foreach ($data as $db => $tables) { 25 - foreach ($tables as $table => $info) { 26 - $table_size = $info['Data_length'] + $info['Index_length']; 27 - 28 - $data[$db][$table]['_totalSize'] = $table_size; 29 - $totals[$db] += $table_size; 30 - $overall += $table_size; 31 - } 32 - } 33 - 34 - echo "APPROXIMATE TABLE SIZES\n"; 35 - asort($totals); 36 - foreach ($totals as $db => $size) { 37 - printf("%-32.32s %18s\n", $db, fmt($totals[$db], $overall)); 38 - $data[$db] = isort($data[$db], '_totalSize'); 39 - foreach ($data[$db] as $table => $info) { 40 - printf(" %-28.28s %18s\n", $table, fmt($info['_totalSize'], $overall)); 41 - } 42 - } 43 - printf("%-32.32s %18s\n", 'TOTAL', fmt($overall, $overall)); 44 - 45 - function fmt($n, $o) { 46 - 47 - return sprintf( 48 - '%8.8s MB %5.5s%%', 49 - number_format($n / (1024 * 1024), 1), 50 - sprintf('%3.1f', 100 * ($n / $o))); 51 - } 52 - 53 -
+2
src/__phutil_library_map__.php
··· 1514 1514 'PhabricatorStorageManagementDatabasesWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementDatabasesWorkflow.php', 1515 1515 'PhabricatorStorageManagementDestroyWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementDestroyWorkflow.php', 1516 1516 'PhabricatorStorageManagementDumpWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementDumpWorkflow.php', 1517 + 'PhabricatorStorageManagementProbeWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementProbeWorkflow.php', 1517 1518 'PhabricatorStorageManagementStatusWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementStatusWorkflow.php', 1518 1519 'PhabricatorStorageManagementUpgradeWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementUpgradeWorkflow.php', 1519 1520 'PhabricatorStorageManagementWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php', ··· 3418 3419 'PhabricatorStorageManagementDatabasesWorkflow' => 'PhabricatorStorageManagementWorkflow', 3419 3420 'PhabricatorStorageManagementDestroyWorkflow' => 'PhabricatorStorageManagementWorkflow', 3420 3421 'PhabricatorStorageManagementDumpWorkflow' => 'PhabricatorStorageManagementWorkflow', 3422 + 'PhabricatorStorageManagementProbeWorkflow' => 'PhabricatorStorageManagementWorkflow', 3421 3423 'PhabricatorStorageManagementStatusWorkflow' => 'PhabricatorStorageManagementWorkflow', 3422 3424 'PhabricatorStorageManagementUpgradeWorkflow' => 'PhabricatorStorageManagementWorkflow', 3423 3425 'PhabricatorStorageManagementWorkflow' => 'PhutilArgumentWorkflow',
+78
src/infrastructure/storage/management/workflow/PhabricatorStorageManagementProbeWorkflow.php
··· 1 + <?php 2 + 3 + final class PhabricatorStorageManagementProbeWorkflow 4 + extends PhabricatorStorageManagementWorkflow { 5 + 6 + public function didConstruct() { 7 + $this 8 + ->setName('probe') 9 + ->setExamples('**probe**') 10 + ->setSynopsis('Show approximate table sizes.'); 11 + } 12 + 13 + public function execute(PhutilArgumentParser $args) { 14 + $console = PhutilConsole::getConsole(); 15 + $console->writeErr( 16 + "%s\n", 17 + pht("Analyzing table sizes (this may take a moment)...")); 18 + 19 + $api = $this->getAPI(); 20 + $patches = $this->getPatches(); 21 + $databases = $api->getDatabaseList($patches); 22 + 23 + $conn_r = $api->getConn(null); 24 + 25 + $data = array(); 26 + foreach ($databases as $database) { 27 + queryfx($conn_r, 'USE %C', $database); 28 + $tables = queryfx_all( 29 + $conn_r, 30 + 'SHOW TABLE STATUS'); 31 + $tables = ipull($tables, null, 'Name'); 32 + $data[$database] = $tables; 33 + } 34 + 35 + $totals = array_fill_keys(array_keys($data), 0); 36 + $overall = 0; 37 + 38 + foreach ($data as $db => $tables) { 39 + foreach ($tables as $table => $info) { 40 + $table_size = $info['Data_length'] + $info['Index_length']; 41 + 42 + $data[$db][$table]['_totalSize'] = $table_size; 43 + $totals[$db] += $table_size; 44 + $overall += $table_size; 45 + } 46 + } 47 + 48 + $console->writeOut("%s\n", pht("APPROXIMATE TABLE SIZES")); 49 + asort($totals); 50 + foreach ($totals as $db => $size) { 51 + $database_size = $this->formatSize($totals[$db], $overall); 52 + $console->writeOut( 53 + "**%s**\n", 54 + sprintf("%-32.32s %18s", $db, $database_size)); 55 + $data[$db] = isort($data[$db], '_totalSize'); 56 + foreach ($data[$db] as $table => $info) { 57 + $table_size = $this->formatSize($info['_totalSize'], $overall); 58 + $console->writeOut( 59 + "%s\n", 60 + sprintf(" %-28.28s %18s", $table, $table_size)); 61 + } 62 + } 63 + $overall_size = $this->formatSize($overall, $overall); 64 + $console->writeOut( 65 + "**%s**\n", 66 + sprintf("%-32.32s %18s", pht('TOTAL'), $overall_size)); 67 + 68 + return 0; 69 + } 70 + 71 + private function formatSize($n, $o) { 72 + return sprintf( 73 + '%8.8s MB %5.5s%%', 74 + number_format($n / (1024 * 1024), 1), 75 + sprintf('%3.1f', 100 * ($n / $o))); 76 + } 77 + 78 + }