diff options
author | Aaron Schulz <aschulz@wikimedia.org> | 2015-10-26 01:15:09 -0700 |
---|---|---|
committer | Aaron Schulz <aschulz@wikimedia.org> | 2015-10-26 01:15:09 -0700 |
commit | 33765cb8dd33759ca7edaffcb9e082d5e3b17043 (patch) | |
tree | 895a60027a6462afebd5b9f1aff8ef7899b1d214 /includes/media/TransformationalImageHandler.php | |
parent | 23ae30d61cca3148451d0b1971d2d466fb6aebad (diff) | |
download | mediawikicore-33765cb8dd33759ca7edaffcb9e082d5e3b17043.tar.gz mediawikicore-33765cb8dd33759ca7edaffcb9e082d5e3b17043.zip |
Convert getMagickVersion() to using APC
Shelling out on my slow vagrant VM takes about ~3-4ms
so it's probably not worth a fallback.
Change-Id: Ifd5758264cc15f1ae07972e839a243f5f891503e
Diffstat (limited to 'includes/media/TransformationalImageHandler.php')
-rw-r--r-- | includes/media/TransformationalImageHandler.php | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index 15753a96eb30..35581493ee15 100644 --- a/includes/media/TransformationalImageHandler.php +++ b/includes/media/TransformationalImageHandler.php @@ -505,30 +505,31 @@ abstract class TransformationalImageHandler extends ImageHandler { * Retrieve the version of the installed ImageMagick * You can use PHPs version_compare() to use this value * Value is cached for one hour. - * @return string Representing the IM version. + * @return string|bool Representing the IM version; false on error */ protected function getMagickVersion() { - global $wgMemc; - - $cache = $wgMemc->get( "imagemagick-version" ); - if ( !$cache ) { - global $wgImageMagickConvertCommand; - $cmd = wfEscapeShellArg( $wgImageMagickConvertCommand ) . ' -version'; - wfDebug( __METHOD__ . ": Running convert -version\n" ); - $retval = ''; - $return = wfShellExec( $cmd, $retval ); - $x = preg_match( '/Version: ImageMagick ([0-9]*\.[0-9]*\.[0-9]*)/', $return, $matches ); - if ( $x != 1 ) { - wfDebug( __METHOD__ . ": ImageMagick version check failed\n" ); - - return null; + return ObjectCache::newAccelerator( CACHE_NONE )->getWithSetCallback( + "imagemagick-version", + 3600, + function () { + global $wgImageMagickConvertCommand; + + $cmd = wfEscapeShellArg( $wgImageMagickConvertCommand ) . ' -version'; + wfDebug( __METHOD__ . ": Running convert -version\n" ); + $retval = ''; + $return = wfShellExec( $cmd, $retval ); + $x = preg_match( + '/Version: ImageMagick ([0-9]*\.[0-9]*\.[0-9]*)/', $return, $matches + ); + if ( $x != 1 ) { + wfDebug( __METHOD__ . ": ImageMagick version check failed\n" ); + + return false; + } + + return $matches[1]; } - $wgMemc->set( "imagemagick-version", $matches[1], 3600 ); - - return $matches[1]; - } - - return $cache; + ); } /** |