X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fuser%2FUser.php;h=4d16594dd5f9ed1b143bf32da4218b2db22a7cf9;hb=dae4c94d893057345f62a3d498fb85c0a54de5a6;hp=3317a1bd03b0586b76699501330fd5c0b0840f2f;hpb=4ec966b4bde9ce7ae442468b9bd98e94384d52c9;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/user/User.php b/includes/user/User.php index 3317a1bd03..4d16594dd5 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -693,19 +693,31 @@ class User implements IDBAccessObject { return null; } - $fields = self::selectFields(); - - $dbw = wfGetDB( DB_MASTER ); - $row = $dbw->selectRow( + $dbr = wfGetDB( DB_REPLICA ); + $row = $dbr->selectRow( 'user', - $fields, + self::selectFields(), [ 'user_name' => $name ], __METHOD__ ); + if ( !$row ) { + // Try the master database... + $dbw = wfGetDB( DB_MASTER ); + $row = $dbw->selectRow( + 'user', + self::selectFields(), + [ 'user_name' => $name ], + __METHOD__ + ); + } + if ( !$row ) { // No user. Create it? - return $options['create'] ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] ) : null; + return $options['create'] + ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] ) + : null; } + $user = self::newFromRow( $row ); // A user is considered to exist as a non-system user if it can @@ -1941,11 +1953,12 @@ class User implements IDBAccessObject { $id = $this->getId(); $userLimit = false; $isNewbie = $this->isNewbie(); + $cache = ObjectCache::getLocalClusterInstance(); if ( $id == 0 ) { // limits for anons if ( isset( $limits['anon'] ) ) { - $keys[wfMemcKey( 'limiter', $action, 'anon' )] = $limits['anon']; + $keys[$cache->makeKey( 'limiter', $action, 'anon' )] = $limits['anon']; } } else { // limits for logged-in users @@ -1954,7 +1967,7 @@ class User implements IDBAccessObject { } // limits for newbie logged-in users if ( $isNewbie && isset( $limits['newbie'] ) ) { - $keys[wfMemcKey( 'limiter', $action, 'user', $id )] = $limits['newbie']; + $keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $limits['newbie']; } } @@ -1991,7 +2004,7 @@ class User implements IDBAccessObject { if ( $userLimit !== false ) { list( $max, $period ) = $userLimit; wfDebug( __METHOD__ . ": effective user limit: $max in {$period}s\n" ); - $keys[wfMemcKey( 'limiter', $action, 'user', $id )] = $userLimit; + $keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $userLimit; } // ip-based limits for all ping-limitable users @@ -2018,8 +2031,6 @@ class User implements IDBAccessObject { } } - $cache = ObjectCache::getLocalClusterInstance(); - $triggered = false; foreach ( $keys as $key => $limit ) { list( $max, $period ) = $limit; @@ -2528,8 +2539,9 @@ class User implements IDBAccessObject { public function touch() { $id = $this->getId(); if ( $id ) { - $key = wfMemcKey( 'user-quicktouched', 'id', $id ); - ObjectCache::getMainWANInstance()->touchCheckKey( $key ); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); + $key = $cache->makeKey( 'user-quicktouched', 'id', $id ); + $cache->touchCheckKey( $key ); $this->mQuickTouched = null; } } @@ -2556,8 +2568,8 @@ class User implements IDBAccessObject { if ( $this->mId ) { if ( $this->mQuickTouched === null ) { - $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId ); - $cache = ObjectCache::getMainWANInstance(); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); + $key = $cache->makeKey( 'user-quicktouched', 'id', $this->mId ); $this->mQuickTouched = wfTimestamp( TS_MW, $cache->getCheckKeyTime( $key ) ); }