Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/249297

Change subject: LoggerFactory: Only check for Psr\Log\LoggerInterface once
......................................................................

LoggerFactory: Only check for Psr\Log\LoggerInterface once

LoggerFactory::getInstance() will be called many times during the course
of handling a typical MediaWiki request. The interface_exists() guard
condition it uses is an attempt to provide an informative error message
when Composer managed libraries are not installed. This check is only
needed on the first invocation of getInstance() to be effective. Using
an additional boolean to guard the interface_exists() call will allow
the PHP runtime to avoid a potentially expensive (at least compared to
a static boolean comparison) function call.

This is the sort of thing that smells of premature optimization, but its
addition is in fact informed by examination of performance reports from
the Wikimedia production environment.

Bug: T115729
Change-Id: I437bcb5326b06145081f2b86f6c4d0c8dc1a318c
(cherry picked from commit 701b9a0dc8f84326b558059e7e0d70d671a828e3)
---
M includes/debug/logger/LoggerFactory.php
1 file changed, 16 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/97/249297/1

diff --git a/includes/debug/logger/LoggerFactory.php 
b/includes/debug/logger/LoggerFactory.php
index f1b24e7..92fbb46 100644
--- a/includes/debug/logger/LoggerFactory.php
+++ b/includes/debug/logger/LoggerFactory.php
@@ -94,18 +94,22 @@
         * @return \\Psr\\Log\\LoggerInterface
         */
        public static function getInstance( $channel ) {
-               if ( !interface_exists( '\Psr\Log\LoggerInterface' ) ) {
-                       $message = (
-                               'MediaWiki requires the <a 
href="https://github.com/php-fig/log";>PSR-3 logging ' .
-                               "library</a> to be present. This library is not 
embedded directly in MediaWiki's " .
-                               "git repository and must be installed 
separately by the end user.\n\n" .
-                               'Please see <a 
href="https://www.mediawiki.org/wiki/Download_from_Git' .
-                               '#Fetch_external_libraries">mediawiki.org</a> 
for help on installing ' .
-                               'the required components.'
-                       );
-                       echo $message;
-                       trigger_error( $message, E_USER_ERROR );
-                       die( 1 );
+               static $hasPSR3Interface = null;
+               if ( $hasPSR3Interface === null ) {
+                       $hasPSR3Interface = interface_exists( 
'\Psr\Log\LoggerInterface' );
+                       if ( !$hasPSR3Interface ) {
+                               $message = (
+                                       'MediaWiki requires the <a 
href="https://github.com/php-fig/log";>PSR-3 logging ' .
+                                       "library</a> to be present. This 
library is not embedded directly in MediaWiki's " .
+                                       "git repository and must be installed 
separately by the end user.\n\n" .
+                                       'Please see <a 
href="https://www.mediawiki.org/wiki/Download_from_Git' .
+                                       
'#Fetch_external_libraries">mediawiki.org</a> for help on installing ' .
+                                       'the required components.'
+                               );
+                               echo $message;
+                               trigger_error( $message, E_USER_ERROR );
+                               die( 1 );
+                       }
                }
 
                return self::getProvider()->getLogger( $channel );

-- 
To view, visit https://gerrit.wikimedia.org/r/249297
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I437bcb5326b06145081f2b86f6c4d0c8dc1a318c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.27.0-wmf.3
Gerrit-Owner: Ori.livneh <o...@wikimedia.org>
Gerrit-Reviewer: BryanDavis <bda...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to