/**
  * Build a value to store in memcached based on the PST content and parser output
  *
  * This makes a simple version of WikiPage::prepareContentForEdit() as stash info
  *
  * @param Content $pstContent
  * @param ParserOutput $parserOutput
  * @param string $timestamp TS_MW
  * @return array (stash info array, TTL in seconds) or (null, 0)
  */
 protected static function buildStashValue(Content $pstContent, ParserOutput $parserOutput, $timestamp)
 {
     // If an item is renewed, mind the cache TTL determined by config and parser functions
     $since = time() - wfTimestamp(TS_UNIX, $parserOutput->getTimestamp());
     $ttl = min($parserOutput->getCacheExpiry() - $since, 5 * 60);
     if ($ttl > 0 && !$parserOutput->getFlag('vary-revision')) {
         // Only store what is actually needed
         $stashInfo = (object) array('pstContent' => $pstContent, 'output' => $parserOutput, 'timestamp' => $timestamp);
         return array($stashInfo, $ttl);
     }
     return array(null, 0);
 }
示例#2
0
 /**
  * Build a value to store in memcached based on the PST content and parser output
  *
  * This makes a simple version of WikiPage::prepareContentForEdit() as stash info
  *
  * @param Content $pstContent
  * @param ParserOutput $parserOutput
  * @param string $timestamp TS_MW
  * @param User $user
  * @return array (stash info array, TTL in seconds) or (null, 0)
  */
 private static function buildStashValue(Content $pstContent, ParserOutput $parserOutput, $timestamp, User $user)
 {
     // If an item is renewed, mind the cache TTL determined by config and parser functions.
     // Put an upper limit on the TTL for sanity to avoid extreme template/file staleness.
     $since = time() - wfTimestamp(TS_UNIX, $parserOutput->getTimestamp());
     $ttl = min($parserOutput->getCacheExpiry() - $since, 5 * 60);
     if ($ttl > 0 && !$parserOutput->getFlag('vary-revision')) {
         // Only store what is actually needed
         $stashInfo = (object) ['pstContent' => $pstContent, 'output' => $parserOutput, 'timestamp' => $timestamp, 'edits' => $user->getEditCount()];
         return [$stashInfo, $ttl];
     }
     return [null, 0];
 }