http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89196
Revision: 89196
Author: aaron
Date: 2011-05-31 01:06:31 +0000 (Tue, 31 May 2011)
Log Message:
-----------
* Fixes for loop in getRevIncludes() from r88821
* Use $pOut->getCacheExpiry() for inclusion version cache expiry
* Minor refactoring
Modified Paths:
--------------
trunk/extensions/FlaggedRevs/dataclasses/FRInclusionCache.php
Modified: trunk/extensions/FlaggedRevs/dataclasses/FRInclusionCache.php
===================================================================
--- trunk/extensions/FlaggedRevs/dataclasses/FRInclusionCache.php
2011-05-31 00:19:09 UTC (rev 89195)
+++ trunk/extensions/FlaggedRevs/dataclasses/FRInclusionCache.php
2011-05-31 01:06:31 UTC (rev 89196)
@@ -20,8 +20,7 @@
global $wgParser, $wgMemc;
wfProfileIn( __METHOD__ );
$versions = false;
- $hash = md5( $article->getTitle()->getPrefixedDBkey() );
- $key = wfMemcKey( 'flaggedrevs', 'revIncludes', $rev->getId(),
$hash );
+ $key = self::getCacheKey( $article->getTitle(), $rev->getId() );
if ( $regen !== 'regen' ) { // check cache
$versions = FlaggedRevs::getMemcValue( $wgMemc->get(
$key ), $article, 'allowStale' );
}
@@ -48,13 +47,14 @@
}
# Get the template/file versions used...
$versions = array( $pOut->getTemplateIds(),
$pOut->getImageTimeKeys() );
- # Save to cache...
+ # Save to cache (check cache expiry for dynamic
elements)...
$data = FlaggedRevs::makeMemcObj( $versions );
- $wgMemc->set( $key, $data, 24*3600 ); // inclusions may
be dynamic
+ $wgMemc->set( $key, $data, $pOut->getCacheExpiry() );
} else {
+ $tVersions =& $versions[0]; // templates
# Do a link batch query for page_latest...
$lb = new LinkBatch();
- foreach ( $versions as $ns => $tmps ) {
+ foreach ( $tVersions as $ns => $tmps ) {
foreach ( $tmps as $dbKey => $revIdDraft ) {
$lb->add( $ns, $dbKey );
}
@@ -62,9 +62,9 @@
$lb->execute();
# Update array with the current page_latest values.
# This kludge is there since $newTemplates (thus
$revIdDraft) is cached.
- foreach ( $versions as $ns => $tmps ) {
+ foreach ( $tVersions as $ns => &$tmps ) {
foreach ( $tmps as $dbKey => &$revIdDraft ) {
- $title = new Title( $ns, $dbKey );
+ $title = Title::makeTitle( $ns, $dbKey
);
$revIdDraft =
(int)$title->getLatestRevID();
}
}
@@ -82,12 +82,16 @@
*/
public static function setRevIncludes( Title $title, $revId,
ParserOutput $pOut ) {
global $wgMemc;
- $hash = md5( $title->getPrefixedDBkey() );
- $key = wfMemcKey( 'flaggedrevs', 'revIncludes', $revId, $hash );
+ $key = self::getCacheKey( $title, $revId );
# Get the template/file versions used...
$versions = array( $pOut->getTemplateIds(),
$pOut->getImageTimeKeys() );
- # Save to cache...
+ # Save to cache (check cache expiry for dynamic elements)...
$data = FlaggedRevs::makeMemcObj( $versions );
- $wgMemc->set( $key, $data, 24*3600 ); // inclusions may be
dynamic
+ $wgMemc->set( $key, $data, $pOut->getCacheExpiry() );
}
+
+ protected static function getCacheKey( Title $title, $revId ) {
+ $hash = md5( $title->getPrefixedDBkey() );
+ return wfMemcKey( 'flaggedrevs', 'revIncludes', $revId, $hash );
+ }
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs