Record user login timing
authorMax Semenik <maxsem.wiki@gmail.com>
Thu, 27 Jul 2017 21:31:42 +0000 (14:31 -0700)
committerMax Semenik <maxsem.wiki@gmail.com>
Thu, 3 Aug 2017 22:33:05 +0000 (15:33 -0700)
Not using existing Timing class because it makes sense only if
request start time is needed, otherwise it just introduces
unneeded complexity and dependency.

Bug: T171882
Change-Id: I984c9223a4481685a7bcb659a68002c8ec4d122a

includes/specialpage/LoginSignupSpecialPage.php

index 0600642..9d6fd5b 100644 (file)
@@ -26,7 +26,9 @@ use MediaWiki\Auth\AuthenticationResponse;
 use MediaWiki\Auth\AuthManager;
 use MediaWiki\Auth\Throttler;
 use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Session\SessionManager;
+use Wikimedia\ScopedCallback;
 
 /**
  * Holds shared logic for login and account creation pages.
@@ -212,6 +214,15 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
         * @param string|null $subPage
         */
        public function execute( $subPage ) {
+               if ( $this->mPosted ) {
+                       $time = microtime( true );
+                       $profilingScope = new ScopedCallback( function () use ( $time ) {
+                               $time = microtime( true ) - $time;
+                               $statsd = MediaWikiServices::getInstance()->getStatsdDataFactory();
+                               $statsd->timing( "timing.login.ui.{$this->authAction}", $time * 1000 );
+                       } );
+               }
+
                $authManager = AuthManager::singleton();
                $session = SessionManager::getGlobalSession();