/** * 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); }
/** * 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]; }