<?php
/**
- * Run this script periodically if you have miser mode enabled, to refresh the
- * caches
+ * Update for cached special pages.
+ * Run this script periodically if you have miser mode enabled.
*
* 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
* @ingroup Maintenance
*/
-require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+require_once( __DIR__ . '/Maintenance.php' );
+/**
+ * Maintenance script to update cached special pages.
+ *
+ * @ingroup Maintenance
+ */
class UpdateSpecialPages extends Maintenance {
public function __construct() {
parent::__construct();
}
public function execute() {
- global $IP, $wgOut, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
- $wgOut->disable();
+ global $IP, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
+
$dbw = wfGetDB( DB_MASTER );
foreach ( $wgSpecialPageCacheUpdates as $special => $call ) {
$this->error( "Uncallable function $call!" );
continue;
}
+ $this->output( sprintf( '%-30s ', $special ) );
$t1 = explode( ' ', microtime() );
call_user_func( $call, $dbw );
$t2 = explode( ' ', microtime() );
- $this->output( sprintf( '%-30s ', $special ) );
$elapsed = ( $t2[0] - $t1[0] ) + ( $t2[1] - $t1[1] );
$hours = intval( $elapsed / 3600 );
$minutes = intval( $elapsed % 3600 / 60 );
}
$this->output( sprintf( "completed in %.2fs\n", $seconds ) );
# Wait for the slave to catch up
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
// This is needed to initialise $wgQueryPages
require_once( "$IP/includes/QueryPage.php" );
foreach ( $wgQueryPages as $page ) {
- @list( $class, $special, $limit ) = $page;
+ list( $class, $special ) = $page;
+ $limit = isset( $page[2] ) ? $page[2] : null;
# --list : just show the name of pages
if ( $this->hasOption( 'list' ) ) {
continue;
}
- $specialObj = SpecialPage::getPage( $special );
+ $specialObj = SpecialPageFactory::getPage( $special );
if ( !$specialObj ) {
$this->output( "No such special page: $special\n" );
exit;
$this->output( "Reconnected\n\n" );
} else {
# Commit the results
- $dbw->commit();
+ $dbw->commit( __METHOD__ );
}
# Wait for the slave to catch up
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
} else {
$this->output( "cheap, skipped\n" );
}