MediaWiki  master
orphanStats.php
Go to the documentation of this file.
1 <?php
24 require_once __DIR__ . '/../Maintenance.php';
25 
27 
34 class OrphanStats extends Maintenance {
35  public function __construct() {
36  parent::__construct();
37  $this->addDescription(
38  "Show some statistics on the blob_orphans table, created with trackBlobs.php" );
39  }
40 
41  protected function getDB( $cluster, $groups = [], $wiki = false ) {
42  $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
43  $lb = $lbFactory->getExternalLB( $cluster );
44 
45  return $lb->getMaintenanceConnectionRef( DB_REPLICA );
46  }
47 
48  public function execute() {
49  $dbr = $this->getDB( DB_REPLICA );
50  if ( !$dbr->tableExists( 'blob_orphans' ) ) {
51  $this->fatalError( "blob_orphans doesn't seem to exist, need to run trackBlobs.php first" );
52  }
53  $res = $dbr->select( 'blob_orphans', '*', '', __METHOD__ );
54 
55  $num = 0;
56  $totalSize = 0;
57  $hashes = [];
58  $maxSize = 0;
59 
60  foreach ( $res as $row ) {
61  $extDB = $this->getDB( $row->bo_cluster );
62  $blobRow = $extDB->selectRow(
63  'blobs',
64  '*',
65  [ 'blob_id' => $row->bo_blob_id ],
66  __METHOD__
67  );
68 
69  $num++;
70  $size = strlen( $blobRow->blob_text );
71  $totalSize += $size;
72  $hashes[sha1( $blobRow->blob_text )] = true;
73  $maxSize = max( $size, $maxSize );
74  }
75  unset( $res );
76 
77  $this->output( "Number of orphans: $num\n" );
78  if ( $num > 0 ) {
79  $this->output( "Average size: " . round( $totalSize / $num, 0 ) . " bytes\n" .
80  "Max size: $maxSize\n" .
81  "Number of unique texts: " . count( $hashes ) . "\n" );
82  }
83  }
84 }
85 
86 $maintClass = OrphanStats::class;
87 require_once RUN_MAINTENANCE_IF_MAIN;
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
Abstract maintenance class for quickly writing and churning out maintenance scripts with minimal effo...
Definition: Maintenance.php:86
Maintenance script that shows some statistics on the blob_orphans table, created with trackBlobs...
Definition: orphanStats.php:34
addDescription( $text)
Set the description text.
output( $out, $channel=null)
Throw some output to the user.
$maintClass
Definition: orphanStats.php:86
const DB_REPLICA
Definition: defines.php:25
fatalError( $msg, $exitCode=1)
Output a message and terminate the current script.
getDB( $cluster, $groups=[], $wiki=false)
Definition: orphanStats.php:41