<?php
/**
- * Send purge requests for listed pages to squid
+ * Send purge requests for listed pages to CDN
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
require_once __DIR__ . '/Maintenance.php';
/**
- * Maintenance script that sends purge requests for listed pages to squid.
+ * Maintenance script that sends purge requests for listed pages to CDN.
*
* @ingroup Maintenance
*/
class PurgeList extends Maintenance {
public function __construct() {
parent::__construct();
- $this->addDescription( 'Send purge requests for listed pages to squid' );
+ $this->addDescription( 'Send purge requests for listed pages to CDN' );
$this->addOption( 'purge', 'Whether to update page_touched.', false, false );
$this->addOption( 'namespace', 'Namespace number', false, true );
$this->addOption( 'all', 'Purge all pages', false, false );
*/
private function doPurge() {
$stdin = $this->getStdin();
- $urls = array();
+ $urls = [];
while ( !feof( $stdin ) ) {
$page = trim( fgets( $stdin ) );
} elseif ( $page !== '' ) {
$title = Title::newFromText( $page );
if ( $title ) {
- $url = $title->getInternalURL();
- $this->output( "$url\n" );
- $urls[] = $url;
+ $newUrls = $title->getCdnUrls();
+
+ foreach ( $newUrls as $url ) {
+ $this->output( "$url\n" );
+ }
+
+ $urls = array_merge( $urls, $newUrls );
+
if ( $this->getOption( 'purge' ) ) {
$title->invalidateCache();
}
* @param int|bool $namespace
*/
private function purgeNamespace( $namespace = false ) {
- $dbr = $this->getDB( DB_SLAVE );
+ $dbr = $this->getDB( DB_REPLICA );
$startId = 0;
if ( $namespace === false ) {
- $conds = array();
+ $conds = [];
} else {
- $conds = array( 'page_namespace' => $namespace );
+ $conds = [ 'page_namespace' => $namespace ];
}
while ( true ) {
$res = $dbr->select( 'page',
- array( 'page_id', 'page_namespace', 'page_title' ),
- $conds + array( 'page_id > ' . $dbr->addQuotes( $startId ) ),
+ [ 'page_id', 'page_namespace', 'page_title' ],
+ $conds + [ 'page_id > ' . $dbr->addQuotes( $startId ) ],
__METHOD__,
- array(
- 'LIMIT' => $this->mBatchSize,
+ [
+ 'LIMIT' => $this->getBatchSize(),
'ORDER BY' => 'page_id'
- )
+ ]
);
if ( !$res->numRows() ) {
break;
}
- $urls = array();
+ $urls = [];
foreach ( $res as $row ) {
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $url = $title->getInternalURL();
- $urls[] = $url;
+ $urls = array_merge( $urls, $title->getCdnUrls() );
$startId = $row->page_id;
}
$this->sendPurgeRequest( $urls );
/**
* Helper to purge an array of $urls
- * @param array $urls List of URLS to purge from squids
+ * @param array $urls List of URLS to purge from CDNs
*/
private function sendPurgeRequest( $urls ) {
if ( $this->hasOption( 'delay' ) ) {
if ( $this->hasOption( 'verbose' ) ) {
$this->output( $url . "\n" );
}
- $u = new CdnCacheUpdate( array( $url ) );
+ $u = new CdnCacheUpdate( [ $url ] );
$u->doUpdate();
usleep( $delay * 1e6 );
}
}
}
-$maintClass = "PurgeList";
+$maintClass = PurgeList::class;
require_once RUN_MAINTENANCE_IF_MAIN;