From: Antoine Musso Date: Sun, 14 Aug 2011 08:51:36 +0000 (+0000) Subject: (bug 28273) Merge purgeList and purgeNamespace scripts X-Git-Tag: 1.31.0-rc.0~28281 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/pie.php?a=commitdiff_plain;h=7cfecb0f2c0d57e062561841005efeee705cc2f7;p=lhc%2Fweb%2Fwiklou.git (bug 28273) Merge purgeList and purgeNamespace scripts Nothing fancy, just copy pasted from purgeNamespace into purgeList. This need to be in 1.18 to avoid publishing purgeNamespace to everyone and removing it in 1.19 =) --- diff --git a/maintenance/purgeList.php b/maintenance/purgeList.php index 9072b4215c..adfcbd7c3b 100644 --- a/maintenance/purgeList.php +++ b/maintenance/purgeList.php @@ -27,9 +27,21 @@ class PurgeList extends Maintenance { parent::__construct(); $this->mDescription = "Send purge requests for listed pages to squid"; $this->addOption( 'purge', 'Whether to update page_touched.' , false, false ); + $this->addOption( 'namespace', 'Namespace number', false, true ); + $this->setBatchSize( 100 ); } public function execute() { + if( $this->hasOption( 'namespace' ) ) { + $this->purgeNamespace(); + } else { + $this->purgeList(); + } + $this->output( "Done!\n" ); + } + + /** Purge URL coming from stdin */ + private function purgeList() { $stdin = $this->getStdin(); $urls = array(); @@ -51,13 +63,70 @@ class PurgeList extends Maintenance { } } } + $this->sendPurgeRequest( $urls ); + } + + /** Purge a namespace given by --namespace */ + private function purgeNamespace() { + $dbr = wfGetDB( DB_SLAVE ); + $ns = $dbr->addQuotes( $this->getOption( 'namespace') ); + + $result = $dbr->select( + array( 'page' ), + array( 'page_namespace', 'page_title' ), + array( "page_namespace = $ns" ), + __METHOD__, + array( 'ORDER BY' => 'page_id' ) + ); + + $start = 0; + $end = $dbr->numRows( $result ); + $this->output( "Will purge $end pages from namespace $ns\n" ); + + # Do remaining chunk + $end += $this->mBatchSize - 1; + $blockStart = $start; + $blockEnd = $start + $this->mBatchSize - 1; + + while( $blockEnd <= $end ) { + # Select pages we will purge: + $result = $dbr->select( + array( 'page' ), + array( 'page_namespace', 'page_title' ), + array( "page_namespace = $ns" ), + __METHOD__, + array( # conditions + 'ORDER BY' => 'page_id', + 'LIMIT' => $this->mBatchSize, + 'OFFSET' => $blockStart, + ) + ); + # Initialize/reset URLs to be purged + $urls = array(); + foreach( $result as $row ) { + $title = Title::makeTitle( $row->page_namespace, $row->page_title ); + $url = $title->getFullUrl(); + $urls[] = $url; + } + + $this->sendPurgeRequest( $urls ); + + $blockStart += $this->mBatchSize; + $blockEnd += $this->mBatchSize; + } + } + + /** + * Helper to purge an array of $urls + * @param $urls array List of URLS to purge from squids + */ + private function sendPurgeRequest( $urls ) { + $this->output( "Purging " . count( $urls ). " urls\n" ); + $u = new SquidUpdate( $urls ); + $u->doUpdate(); + } - $this->output( "Purging " . count( $urls ) . " urls...\n" ); - $u = new SquidUpdate( $urls ); - $u->doUpdate(); - $this->output( "Done!\n" ); - } } $maintClass = "PurgeList"; diff --git a/maintenance/purgeNamespace.php b/maintenance/purgeNamespace.php deleted file mode 100644 index 0759ca0f3c..0000000000 --- a/maintenance/purgeNamespace.php +++ /dev/null @@ -1,96 +0,0 @@ -mDescription = "Purge squids pages for a given namespace"; - $this->addOption( "namespace", "Namespace number", true, true ); - $this->setBatchSize( 100 ); - parent::__construct(); - } - - public function execute() { - $dbr = wfGetDB( DB_SLAVE ); - $ns = $dbr->addQuotes( $this->getOption( 'namespace') ); - - $result = $dbr->select( - array( 'page' ), - array( 'page_namespace', 'page_title' ), - array( "page_namespace = $ns" ), - __METHOD__, - array( 'ORDER BY' => 'page_id' ) - ); - - $start = 0; - $end = $dbr->numRows( $result ); - $this->output( "Will purge $end pages from namespace $ns\n" ); - - # Do remaining chunk - $end += $this->mBatchSize - 1; - $blockStart = $start; - $blockEnd = $start + $this->mBatchSize - 1; - - while( $blockEnd <= $end ) { - # Select pages we will purge: - $result = $dbr->select( - array( 'page' ), - array( 'page_namespace', 'page_title' ), - array( "page_namespace = $ns" ), - __METHOD__, - array( # conditions - 'ORDER BY' => 'page_id', - 'LIMIT' => $this->mBatchSize, - 'OFFSET' => $blockStart, - ) - ); - - # Initialize/reset URLs to be purged - $urls = array(); - foreach( $result as $row ) { - $title = Title::makeTitle( $row->page_namespace, $row->page_title ); - $url = $title->getFullUrl(); - $urls[] = $url; - } - - $this->sendPurgeRequest( $urls ); - - $blockStart += $this->mBatchSize; - $blockEnd += $this->mBatchSize; - } - - $this->output( "Done!\n" ); - } - - private function sendPurgeRequest( $urls ) { - $this->output( "Purging " . count( $urls ). " urls\n" ); - $u = new SquidUpdate( $urls ); - $u->doUpdate(); - } -} - -$maintClass = "PurgeNamespace"; -require_once( RUN_MAINTENANCE_IF_MAIN ); -