本文整理汇总了PHP中HTMLFileCache::saveToFileCache方法的典型用法代码示例。如果您正苦于以下问题:PHP HTMLFileCache::saveToFileCache方法的具体用法?PHP HTMLFileCache::saveToFileCache怎么用?PHP HTMLFileCache::saveToFileCache使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTMLFileCache
的用法示例。
在下文中一共展示了HTMLFileCache::saveToFileCache方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
public function execute()
{
global $wgRequestTime;
if (!$this->enabled) {
$this->error("Nothing to do -- \$wgUseFileCache is disabled.", true);
}
$start = $this->getOption('start', "0");
if (!ctype_digit($start)) {
$this->error("Invalid value for start parameter.", true);
}
$start = intval($start);
$end = $this->getOption('end', "0");
if (!ctype_digit($end)) {
$this->error("Invalid value for end parameter.", true);
}
$end = intval($end);
$this->output("Building content page file cache from page {$start}!\n");
$dbr = $this->getDB(DB_REPLICA);
$overwrite = $this->getOption('overwrite', false);
$start = $start > 0 ? $start : $dbr->selectField('page', 'MIN(page_id)', false, __METHOD__);
$end = $end > 0 ? $end : $dbr->selectField('page', 'MAX(page_id)', false, __METHOD__);
if (!$start) {
$this->error("Nothing to do.", true);
}
$_SERVER['HTTP_ACCEPT_ENCODING'] = 'bgzip';
// hack, no real client
# Do remaining chunk
$end += $this->mBatchSize - 1;
$blockStart = $start;
$blockEnd = $start + $this->mBatchSize - 1;
$dbw = $this->getDB(DB_MASTER);
// Go through each page and save the output
while ($blockEnd <= $end) {
// Get the pages
$res = $dbr->select('page', ['page_namespace', 'page_title', 'page_id'], ['page_namespace' => MWNamespace::getContentNamespaces(), "page_id BETWEEN {$blockStart} AND {$blockEnd}"], __METHOD__, ['ORDER BY' => 'page_id ASC', 'USE INDEX' => 'PRIMARY']);
$this->beginTransaction($dbw, __METHOD__);
// for any changes
foreach ($res as $row) {
$rebuilt = false;
$title = Title::makeTitleSafe($row->page_namespace, $row->page_title);
if (null == $title) {
$this->output("Page {$row->page_id} has bad title\n");
continue;
// broken title?
}
$context = new RequestContext();
$context->setTitle($title);
$article = Article::newFromTitle($title, $context);
$context->setWikiPage($article->getPage());
// If the article is cacheable, then load it
if ($article->isFileCacheable(HTMLFileCache::MODE_REBUILD)) {
$viewCache = new HTMLFileCache($title, 'view');
$historyCache = new HTMLFileCache($title, 'history');
if ($viewCache->isCacheGood() && $historyCache->isCacheGood()) {
if ($overwrite) {
$rebuilt = true;
} else {
$this->output("Page '{$title}' (id {$row->page_id}) already cached\n");
continue;
// done already!
}
}
MediaWiki\suppressWarnings();
// header notices
// Cache ?action=view
$wgRequestTime = microtime(true);
# bug 22852
ob_start();
$article->view();
$context->getOutput()->output();
$context->getOutput()->clearHTML();
$viewHtml = ob_get_clean();
$viewCache->saveToFileCache($viewHtml);
// Cache ?action=history
$wgRequestTime = microtime(true);
# bug 22852
ob_start();
Action::factory('history', $article, $context)->show();
$context->getOutput()->output();
$context->getOutput()->clearHTML();
$historyHtml = ob_get_clean();
$historyCache->saveToFileCache($historyHtml);
MediaWiki\restoreWarnings();
if ($rebuilt) {
$this->output("Re-cached page '{$title}' (id {$row->page_id})...");
} else {
$this->output("Cached page '{$title}' (id {$row->page_id})...");
}
$this->output("[view: " . strlen($viewHtml) . " bytes; " . "history: " . strlen($historyHtml) . " bytes]\n");
} else {
$this->output("Page '{$title}' (id {$row->page_id}) not cacheable\n");
}
}
$this->commitTransaction($dbw, __METHOD__);
// commit any changes (just for sanity)
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
}
$this->output("Done!\n");
}