/** * Initialize all query page objects */ function __construct() { parent::__construct(); foreach (QueryPage::getPages() as $page) { $class = $page[0]; if (!in_array($class, $this->manualTest)) { $this->queryPages[$class] = new $class(); } } }
public function __construct(ApiQuery $query, $moduleName) { parent::__construct($query, $moduleName, 'qp'); // Build mapping from special page names to QueryPage classes $uselessQueryPages = $this->getConfig()->get('APIUselessQueryPages'); $this->qpMap = array(); foreach (QueryPage::getPages() as $page) { if (!in_array($page[1], $uselessQueryPages)) { $this->qpMap[$page[1]] = $page[0]; } } }
public function execute() { global $wgQueryCacheLimit, $wgDisableQueryPageUpdate; $dbw = $this->getDB(DB_MASTER); $this->doSpecialPageCacheUpdates($dbw); foreach (QueryPage::getPages() as $page) { list($class, $special) = $page; $limit = isset($page[2]) ? $page[2] : null; # --list : just show the name of pages if ($this->hasOption('list')) { $this->output("{$special} [QueryPage]\n"); continue; } if (!$this->hasOption('override') && $wgDisableQueryPageUpdate && in_array($special, $wgDisableQueryPageUpdate)) { $this->output(sprintf("%-30s [QueryPage] disabled\n", $special)); continue; } $specialObj = SpecialPageFactory::getPage($special); if (!$specialObj) { $this->output("No such special page: {$special}\n"); exit; } if ($specialObj instanceof QueryPage) { $queryPage = $specialObj; } else { $class = get_class($specialObj); $this->error("{$class} is not an instance of QueryPage.\n", 1); die; } if (!$this->hasOption('only') || $this->getOption('only') == $queryPage->getName()) { $this->output(sprintf('%-30s [QueryPage] ', $special)); if ($queryPage->isExpensive()) { $t1 = microtime(true); # Do the query $num = $queryPage->recache($limit === null ? $wgQueryCacheLimit : $limit); $t2 = microtime(true); if ($num === false) { $this->output("FAILED: database error\n"); } else { $this->output("got {$num} rows in "); $elapsed = $t2 - $t1; $hours = intval($elapsed / 3600); $minutes = intval($elapsed % 3600 / 60); $seconds = $elapsed - $hours * 3600 - $minutes * 60; if ($hours) { $this->output($hours . 'h '); } if ($minutes) { $this->output($minutes . 'm '); } $this->output(sprintf("%.2fs\n", $seconds)); } # Reopen any connections that have closed if (!wfGetLB()->pingAll()) { $this->output("\n"); do { $this->error("Connection failed, reconnecting in 10 seconds..."); sleep(10); } while (!wfGetLB()->pingAll()); $this->output("Reconnected\n\n"); } # Wait for the slave to catch up wfWaitForSlaves(); } else { $this->output("cheap, skipped\n"); } if ($this->hasOption('only')) { break; } } } }