http://www.mediawiki.org/wiki/Special:Code/MediaWiki/73329

Revision: 73329
Author:   nikerabbit
Date:     2010-09-19 15:24:15 +0000 (Sun, 19 Sep 2010)

Log Message:
-----------
Reduce unnecessary cache purging

Modified Paths:
--------------
    trunk/extensions/Translate/scripts/createMessageIndex.php
    trunk/extensions/Translate/utils/MessageIndexRebuilder.php

Modified: trunk/extensions/Translate/scripts/createMessageIndex.php
===================================================================
--- trunk/extensions/Translate/scripts/createMessageIndex.php   2010-09-19 
15:23:06 UTC (rev 73328)
+++ trunk/extensions/Translate/scripts/createMessageIndex.php   2010-09-19 
15:24:15 UTC (rev 73329)
@@ -32,7 +32,5 @@
        showUsage();
 }
 
-$cache = new ArrayMemoryCache( 'groupstats' );
-$cache->clearAll();
 MessageGroups::clearCache();
 MessageIndexRebuilder::execute();

Modified: trunk/extensions/Translate/utils/MessageIndexRebuilder.php
===================================================================
--- trunk/extensions/Translate/utils/MessageIndexRebuilder.php  2010-09-19 
15:23:06 UTC (rev 73328)
+++ trunk/extensions/Translate/utils/MessageIndexRebuilder.php  2010-09-19 
15:24:15 UTC (rev 73329)
@@ -18,6 +18,13 @@
        public static function execute() {
                $groups = MessageGroups::singleton()->getGroups();
 
+               $filename = TranslateUtils::cacheFile( 
'translate_messageindex.ser' );
+               if ( file_exists( $filename ) ) {
+                       $old = unserialize( file_get_contents( $filename ) );
+               } else {
+                       $old = array();
+               }
+
                $hugearray = array();
                $postponed = array();
 
@@ -41,8 +48,21 @@
                        self::checkAndAdd( $hugearray, $g, true );
                }
 
-               $filename = TranslateUtils::cacheFile( 
'translate_messageindex.ser' );
                file_put_contents( $filename, serialize( $hugearray ) );
+
+               $changes = array();
+               foreach ( array_diff_assoc( $hugearray, $old ) as $groups ) {
+                       foreach ( (array) $groups as $group ) $changes[$group] 
= true;
+               }
+
+               foreach ( array_diff_assoc( $old, $hugearray ) as $groups ) {
+                       foreach ( (array) $groups as $group ) $changes[$group] 
= true;
+               }
+
+               $cache = new ArrayMemoryCache( 'groupstats' );
+               foreach ( $changes as $key => $_ ) {
+                       $cache->clearGroup( $key );
+               }
        }
 
        protected static function checkAndAdd( &$hugearray, $g, $ignore = false 
) {



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to