当前位置: 首页>>代码示例>>PHP>>正文


PHP ParserOutput::getCacheTime方法代码示例

本文整理汇总了PHP中ParserOutput::getCacheTime方法的典型用法代码示例。如果您正苦于以下问题:PHP ParserOutput::getCacheTime方法的具体用法?PHP ParserOutput::getCacheTime怎么用?PHP ParserOutput::getCacheTime使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ParserOutput的用法示例。


在下文中一共展示了ParserOutput::getCacheTime方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: updateLinksTimestamp

 /**
  * Update links table freshness
  */
 protected function updateLinksTimestamp()
 {
     if ($this->mId) {
         // The link updates made here only reflect the freshness of the parser output
         $timestamp = $this->mParserOutput->getCacheTime();
         $this->mDb->update('page', array('page_links_updated' => $this->mDb->timestamp($timestamp)), array('page_id' => $this->mId), __METHOD__);
     }
 }
开发者ID:D66Ha,项目名称:mediawiki,代码行数:11,代码来源:LinksUpdate.php

示例2: getAsJobSpecification

 public function getAsJobSpecification()
 {
     if ($this->user) {
         $userInfo = array('userId' => $this->user->getId(), 'userName' => $this->user->getName());
     } else {
         $userInfo = false;
     }
     return array('wiki' => $this->mDb->getWikiID(), 'job' => new JobSpecification('refreshLinksPrioritized', array('rootJobTimestamp' => $this->mParserOutput->getCacheTime(), 'useRecursiveLinksUpdate' => $this->mRecursive, 'triggeringUser' => $userInfo), array('removeDuplicates' => true), $this->getTitle()));
 }
开发者ID:pirater,项目名称:mediawiki,代码行数:9,代码来源:LinksUpdate.php

示例3: getAsJobSpecification

 public function getAsJobSpecification()
 {
     if ($this->user) {
         $userInfo = ['userId' => $this->user->getId(), 'userName' => $this->user->getName()];
     } else {
         $userInfo = false;
     }
     if ($this->mRevision) {
         $triggeringRevisionId = $this->mRevision->getId();
     } else {
         $triggeringRevisionId = false;
     }
     return ['wiki' => $this->getDB()->getWikiID(), 'job' => new JobSpecification('refreshLinksPrioritized', ['rootJobTimestamp' => $this->mParserOutput->getCacheTime(), 'useRecursiveLinksUpdate' => $this->mRecursive, 'triggeringUser' => $userInfo, 'triggeringRevisionId' => $triggeringRevisionId], ['removeDuplicates' => true], $this->getTitle())];
 }
开发者ID:paladox,项目名称:mediawiki,代码行数:14,代码来源:LinksUpdate.php

示例4: parse

 /**
  * Convert wikitext to HTML
  * Do not call this function recursively.
  *
  * @param string $text Text we want to parse
  * @param Title $title
  * @param ParserOptions $options
  * @param bool $linestart
  * @param bool $clearState
  * @param int $revid Number to pass in {{REVISIONID}}
  * @return ParserOutput A ParserOutput
  */
 public function parse($text, Title $title, ParserOptions $options, $linestart = true, $clearState = true, $revid = null)
 {
     /**
      * First pass--just handle <nowiki> sections, pass the rest off
      * to internalParse() which does all the real work.
      */
     global $wgShowHostnames;
     if ($clearState) {
         // We use U+007F DELETE to construct strip markers, so we have to make
         // sure that this character does not occur in the input text.
         $text = strtr($text, "", "?");
         $magicScopeVariable = $this->lock();
     }
     $this->startParse($title, $options, self::OT_HTML, $clearState);
     $this->currentRevisionCache = null;
     $this->mInputSize = strlen($text);
     if ($this->mOptions->getEnableLimitReport()) {
         $this->mOutput->resetParseStartTime();
     }
     $oldRevisionId = $this->mRevisionId;
     $oldRevisionObject = $this->mRevisionObject;
     $oldRevisionTimestamp = $this->mRevisionTimestamp;
     $oldRevisionUser = $this->mRevisionUser;
     $oldRevisionSize = $this->mRevisionSize;
     if ($revid !== null) {
         $this->mRevisionId = $revid;
         $this->mRevisionObject = null;
         $this->mRevisionTimestamp = null;
         $this->mRevisionUser = null;
         $this->mRevisionSize = null;
     }
     Hooks::run('ParserBeforeStrip', array(&$this, &$text, &$this->mStripState));
     # No more strip!
     Hooks::run('ParserAfterStrip', array(&$this, &$text, &$this->mStripState));
     $text = $this->internalParse($text);
     Hooks::run('ParserAfterParse', array(&$this, &$text, &$this->mStripState));
     $text = $this->internalParseHalfParsed($text, true, $linestart);
     /**
      * A converted title will be provided in the output object if title and
      * content conversion are enabled, the article text does not contain
      * a conversion-suppressing double-underscore tag, and no
      * {{DISPLAYTITLE:...}} is present. DISPLAYTITLE takes precedence over
      * automatic link conversion.
      */
     if (!($options->getDisableTitleConversion() || isset($this->mDoubleUnderscores['nocontentconvert']) || isset($this->mDoubleUnderscores['notitleconvert']) || $this->mOutput->getDisplayTitle() !== false)) {
         $convruletitle = $this->getConverterLanguage()->getConvRuleTitle();
         if ($convruletitle) {
             $this->mOutput->setTitleText($convruletitle);
         } else {
             $titleText = $this->getConverterLanguage()->convertTitle($title);
             $this->mOutput->setTitleText($titleText);
         }
     }
     if ($this->mExpensiveFunctionCount > $this->mOptions->getExpensiveParserFunctionLimit()) {
         $this->limitationWarn('expensive-parserfunction', $this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit());
     }
     # Information on include size limits, for the benefit of users who try to skirt them
     if ($this->mOptions->getEnableLimitReport()) {
         $max = $this->mOptions->getMaxIncludeSize();
         $cpuTime = $this->mOutput->getTimeSinceStart('cpu');
         if ($cpuTime !== null) {
             $this->mOutput->setLimitReportData('limitreport-cputime', sprintf("%.3f", $cpuTime));
         }
         $wallTime = $this->mOutput->getTimeSinceStart('wall');
         $this->mOutput->setLimitReportData('limitreport-walltime', sprintf("%.3f", $wallTime));
         $this->mOutput->setLimitReportData('limitreport-ppvisitednodes', array($this->mPPNodeCount, $this->mOptions->getMaxPPNodeCount()));
         $this->mOutput->setLimitReportData('limitreport-ppgeneratednodes', array($this->mGeneratedPPNodeCount, $this->mOptions->getMaxGeneratedPPNodeCount()));
         $this->mOutput->setLimitReportData('limitreport-postexpandincludesize', array($this->mIncludeSizes['post-expand'], $max));
         $this->mOutput->setLimitReportData('limitreport-templateargumentsize', array($this->mIncludeSizes['arg'], $max));
         $this->mOutput->setLimitReportData('limitreport-expansiondepth', array($this->mHighestExpansionDepth, $this->mOptions->getMaxPPExpandDepth()));
         $this->mOutput->setLimitReportData('limitreport-expensivefunctioncount', array($this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit()));
         Hooks::run('ParserLimitReportPrepare', array($this, $this->mOutput));
         $limitReport = "NewPP limit report\n";
         if ($wgShowHostnames) {
             $limitReport .= 'Parsed by ' . wfHostname() . "\n";
         }
         $limitReport .= 'Cached time: ' . $this->mOutput->getCacheTime() . "\n";
         $limitReport .= 'Cache expiry: ' . $this->mOutput->getCacheExpiry() . "\n";
         $limitReport .= 'Dynamic content: ' . ($this->mOutput->hasDynamicContent() ? 'true' : 'false') . "\n";
         foreach ($this->mOutput->getLimitReportData() as $key => $value) {
             if (Hooks::run('ParserLimitReportFormat', array($key, &$value, &$limitReport, false, false))) {
                 $keyMsg = wfMessage($key)->inLanguage('en')->useDatabase(false);
                 $valueMsg = wfMessage(array("{$key}-value-text", "{$key}-value"))->inLanguage('en')->useDatabase(false);
                 if (!$valueMsg->exists()) {
                     $valueMsg = new RawMessage('$1');
                 }
                 if (!$keyMsg->isDisabled() && !$valueMsg->isDisabled()) {
                     $valueMsg->params($value);
//.........这里部分代码省略.........
开发者ID:rrameshs,项目名称:mediawiki,代码行数:101,代码来源:Parser.php

示例5: triggerOpportunisticLinksUpdate

 /**
  * Opportunistically enqueue link update jobs given fresh parser output if useful
  *
  * @param ParserOutput $parserOutput Current version page output
  * @since 1.25
  */
 public function triggerOpportunisticLinksUpdate(ParserOutput $parserOutput)
 {
     if (wfReadOnly()) {
         return;
     }
     if (!Hooks::run('OpportunisticLinksUpdate', [$this, $this->mTitle, $parserOutput])) {
         return;
     }
     $config = RequestContext::getMain()->getConfig();
     $params = ['isOpportunistic' => true, 'rootJobTimestamp' => $parserOutput->getCacheTime()];
     if ($this->mTitle->areRestrictionsCascading()) {
         // If the page is cascade protecting, the links should really be up-to-date
         JobQueueGroup::singleton()->lazyPush(RefreshLinksJob::newPrioritized($this->mTitle, $params));
     } elseif (!$config->get('MiserMode') && $parserOutput->hasDynamicContent()) {
         // Assume the output contains "dynamic" time/random based magic words.
         // Only update pages that expired due to dynamic content and NOT due to edits
         // to referenced templates/files. When the cache expires due to dynamic content,
         // page_touched is unchanged. We want to avoid triggering redundant jobs due to
         // views of pages that were just purged via HTMLCacheUpdateJob. In that case, the
         // template/file edit already triggered recursive RefreshLinksJob jobs.
         if ($this->getLinksTimestamp() > $this->getTouched()) {
             // If a page is uncacheable, do not keep spamming a job for it.
             // Although it would be de-duplicated, it would still waste I/O.
             $cache = ObjectCache::getLocalClusterInstance();
             $key = $cache->makeKey('dynamic-linksupdate', 'last', $this->getId());
             $ttl = max($parserOutput->getCacheExpiry(), 3600);
             if ($cache->add($key, time(), $ttl)) {
                 JobQueueGroup::singleton()->lazyPush(RefreshLinksJob::newDynamic($this->mTitle, $params));
             }
         }
     }
 }
开发者ID:paladox,项目名称:mediawiki,代码行数:38,代码来源:WikiPage.php

示例6: triggerOpportunisticLinksUpdate

 /**
  * Opportunistically enqueue link update jobs given fresh parser output if useful
  *
  * @param ParserOutput $parserOutput Current version page output
  * @since 1.25
  */
 public function triggerOpportunisticLinksUpdate(ParserOutput $parserOutput)
 {
     if (wfReadOnly()) {
         return;
     }
     if (!Hooks::run('OpportunisticLinksUpdate', array($this, $this->mTitle, $parserOutput))) {
         return;
     }
     if ($this->mTitle->areRestrictionsCascading()) {
         // If the page is cascade protecting, the links should really be up-to-date
         $params = array('prioritize' => true);
     } elseif ($parserOutput->hasDynamicContent()) {
         // Assume the output contains time/random based magic words
         $params = array();
     } else {
         // If the inclusions are deterministic, the edit-triggered link jobs are enough
         return;
     }
     // Check if the last link refresh was before page_touched
     if ($this->getLinksTimestamp() < $this->getTouched()) {
         $params['isOpportunistic'] = true;
         $params['rootJobTimestamp'] = $parserOutput->getCacheTime();
         JobQueueGroup::singleton()->lazyPush(new RefreshLinksJob($this->mTitle, $params));
     }
 }
开发者ID:Tanych,项目名称:mediawiki,代码行数:31,代码来源:WikiPage.php

示例7: parse


//.........这里部分代码省略.........
     $this->mInputSize = strlen($text);
     if ($this->mOptions->getEnableLimitReport()) {
         $this->mOutput->resetParseStartTime();
     }
     $oldRevisionId = $this->mRevisionId;
     $oldRevisionObject = $this->mRevisionObject;
     $oldRevisionTimestamp = $this->mRevisionTimestamp;
     $oldRevisionUser = $this->mRevisionUser;
     $oldRevisionSize = $this->mRevisionSize;
     if ($revid !== null) {
         $this->mRevisionId = $revid;
         $this->mRevisionObject = null;
         $this->mRevisionTimestamp = null;
         $this->mRevisionUser = null;
         $this->mRevisionSize = null;
     }
     Hooks::run('ParserBeforeStrip', [&$this, &$text, &$this->mStripState]);
     # No more strip!
     Hooks::run('ParserAfterStrip', [&$this, &$text, &$this->mStripState]);
     $text = $this->internalParse($text);
     Hooks::run('ParserAfterParse', [&$this, &$text, &$this->mStripState]);
     $text = $this->internalParseHalfParsed($text, true, $linestart);
     /**
      * A converted title will be provided in the output object if title and
      * content conversion are enabled, the article text does not contain
      * a conversion-suppressing double-underscore tag, and no
      * {{DISPLAYTITLE:...}} is present. DISPLAYTITLE takes precedence over
      * automatic link conversion.
      */
     if (!($options->getDisableTitleConversion() || isset($this->mDoubleUnderscores['nocontentconvert']) || isset($this->mDoubleUnderscores['notitleconvert']) || $this->mOutput->getDisplayTitle() !== false)) {
         $convruletitle = $this->getConverterLanguage()->getConvRuleTitle();
         if ($convruletitle) {
             $this->mOutput->setTitleText($convruletitle);
         } else {
             $titleText = $this->getConverterLanguage()->convertTitle($title);
             $this->mOutput->setTitleText($titleText);
         }
     }
     # Done parsing! Compute runtime adaptive expiry if set
     $this->mOutput->finalizeAdaptiveCacheExpiry();
     # Warn if too many heavyweight parser functions were used
     if ($this->mExpensiveFunctionCount > $this->mOptions->getExpensiveParserFunctionLimit()) {
         $this->limitationWarn('expensive-parserfunction', $this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit());
     }
     # Information on include size limits, for the benefit of users who try to skirt them
     if ($this->mOptions->getEnableLimitReport()) {
         $max = $this->mOptions->getMaxIncludeSize();
         $cpuTime = $this->mOutput->getTimeSinceStart('cpu');
         if ($cpuTime !== null) {
             $this->mOutput->setLimitReportData('limitreport-cputime', sprintf("%.3f", $cpuTime));
         }
         $wallTime = $this->mOutput->getTimeSinceStart('wall');
         $this->mOutput->setLimitReportData('limitreport-walltime', sprintf("%.3f", $wallTime));
         $this->mOutput->setLimitReportData('limitreport-ppvisitednodes', [$this->mPPNodeCount, $this->mOptions->getMaxPPNodeCount()]);
         $this->mOutput->setLimitReportData('limitreport-ppgeneratednodes', [$this->mGeneratedPPNodeCount, $this->mOptions->getMaxGeneratedPPNodeCount()]);
         $this->mOutput->setLimitReportData('limitreport-postexpandincludesize', [$this->mIncludeSizes['post-expand'], $max]);
         $this->mOutput->setLimitReportData('limitreport-templateargumentsize', [$this->mIncludeSizes['arg'], $max]);
         $this->mOutput->setLimitReportData('limitreport-expansiondepth', [$this->mHighestExpansionDepth, $this->mOptions->getMaxPPExpandDepth()]);
         $this->mOutput->setLimitReportData('limitreport-expensivefunctioncount', [$this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit()]);
         Hooks::run('ParserLimitReportPrepare', [$this, $this->mOutput]);
         $limitReport = '';
         Hooks::run('ParserLimitReport', [$this, &$limitReport]);
         if ($limitReport != '') {
             // Sanitize for comment. Note '‐' in the replacement is U+2010,
             // which looks much like the problematic '-'.
             $limitReport = str_replace(['-', '&'], ['‐', '&amp;'], $limitReport);
             $text .= "\n<!-- \nNewPP limit report\n{$limitReport}-->\n";
         }
         // Add on template profiling data in human/machine readable way
         $dataByFunc = $this->mProfiler->getFunctionStats();
         uasort($dataByFunc, function ($a, $b) {
             return $a['real'] < $b['real'];
             // descending order
         });
         $profileReport = [];
         foreach (array_slice($dataByFunc, 0, 10) as $item) {
             $profileReport[] = sprintf("%6.2f%% %8.3f %6d %s", $item['%real'], $item['real'], $item['calls'], $item['name']);
         }
         $this->mOutput->setLimitReportData('limitreport-timingprofile', $profileReport);
         // Add other cache related metadata
         if ($wgShowHostnames) {
             $this->mOutput->setLimitReportData('cachereport-origin', wfHostname());
         }
         $this->mOutput->setLimitReportData('cachereport-timestamp', $this->mOutput->getCacheTime());
         $this->mOutput->setLimitReportData('cachereport-ttl', $this->mOutput->getCacheExpiry());
         $this->mOutput->setLimitReportData('cachereport-transientcontent', $this->mOutput->hasDynamicContent());
         if ($this->mGeneratedPPNodeCount > $this->mOptions->getMaxGeneratedPPNodeCount() / 10) {
             wfDebugLog('generated-pp-node-count', $this->mGeneratedPPNodeCount . ' ' . $this->mTitle->getPrefixedDBkey());
         }
     }
     $this->mOutput->setText($text);
     $this->mRevisionId = $oldRevisionId;
     $this->mRevisionObject = $oldRevisionObject;
     $this->mRevisionTimestamp = $oldRevisionTimestamp;
     $this->mRevisionUser = $oldRevisionUser;
     $this->mRevisionSize = $oldRevisionSize;
     $this->mInputSize = false;
     $this->currentRevisionCache = null;
     return $this->mOutput;
 }
开发者ID:paladox,项目名称:mediawiki,代码行数:101,代码来源:Parser.php

示例8: getAsJobSpecification

 public function getAsJobSpecification()
 {
     return array('wiki' => $this->mDb->getWikiID(), 'job' => new JobSpecification('refreshLinksPrioritized', array('prioritize' => true, 'rootJobTimestamp' => $this->mParserOutput->getCacheTime(), 'useRecursiveLinksUpdate' => $this->mRecursive), array('removeDuplicates' => true), $this->getTitle()));
 }
开发者ID:junjiemars,项目名称:mediawiki,代码行数:4,代码来源:LinksUpdate.php


注:本文中的ParserOutput::getCacheTime方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。