+ public static function logMessages() {
+ global $wgMessageCache, $wgAdaptiveMessageCache;
+ if ( !$wgAdaptiveMessageCache || !$wgMessageCache instanceof MessageCache ) {
+ return;
+ }
+
+ $cachekey = wfMemckey( 'message-profiling' );
+ $cache = wfGetCache( CACHE_DB );
+ $data = $cache->get( $cachekey );
+
+ if ( !$data ) $data = array();
+
+ $age = self::$mAdaptiveDataAge;
+ $filterDate = substr( wfTimestamp( TS_MW, time()-$age ), 0, 8 );
+ foreach ( array_keys( $data ) as $key ) {
+ if ( $key < $filterDate ) unset( $data[$key] );
+ }
+
+ $index = substr( wfTimestampNow(), 0, 8 );
+ if ( !isset( $data[$index] ) ) $data[$index] = array();
+
+ foreach ( $wgMessageCache->mRequestedMessages as $message => $_ ) {
+ if ( !isset( $data[$index][$message] ) ) $data[$index][$message] = 0;
+ $data[$index][$message]++;
+ }
+
+ $cache->set( $cachekey, $data );
+ }
+
+ public function getMostUsedMessages() {
+ $cachekey = wfMemckey( 'message-profiling' );
+ $cache = wfGetCache( CACHE_DB );
+ $data = $cache->get( $cachekey );
+ if ( !$data ) return array();
+
+ $list = array();
+
+ foreach( $data as $messages ) {
+ foreach( $messages as $message => $count ) {
+ $key = $message;
+ if ( !isset( $list[$key] ) ) $list[$key] = 0;
+ $list[$key] += $count;
+ }
+ }
+
+ $max = max( $list );
+ foreach ( $list as $message => $count ) {
+ if ( $count < intval( $max * self::$mAdaptiveInclusionThreshold ) ) {
+ unset( $list[$message] );
+ }
+ }
+
+ return array_keys( $list );
+ }
+