X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=thumb.php;h=c611dc3ca75aa3d127d7c7293ba3ecfe77a842d4;hb=b326ce054a67a4bc11e01bf969fb69eff1373f63;hp=3d49a4353bf9c8b9b33a279c8000744a04674181;hpb=773882adbf8209a5d68e8f34a7865dc45a161751;p=lhc%2Fweb%2Fwiklou.git diff --git a/thumb.php b/thumb.php index 3d49a4353b..c611dc3ca7 100644 --- a/thumb.php +++ b/thumb.php @@ -116,6 +116,10 @@ function wfStreamThumb( array $params ) { $params['width'] = $params['w']; unset( $params['w'] ); } + if ( isset( $params['width'] ) && substr( $params['width'], -2 ) == 'px' ) { + // strip the px (pixel) suffix, if found + $params['width'] = substr( $width, 0, strlen( $width ) - 2 ); + } if ( isset( $params['p'] ) ) { $params['page'] = $params['p']; } @@ -383,9 +387,17 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath $thumb = false; $errorHtml = false; + // guard thumbnail rendering with PoolCounter to avoid stampedes + // expensive files use a separate PoolCounter config so it is possible to set up a global limit on them + if ( $file->isExpensiveToThumbnail() ) { + $poolCounterType = 'FileRenderExpensive'; + } else { + $poolCounterType = 'FileRender'; + } + // Thumbnail isn't already there, so create the new thumbnail... try { - $work = new PoolCounterWorkViaCallback( 'FileRender', sha1( $file->getName() ), + $work = new PoolCounterWorkViaCallback( $poolCounterType, sha1( $file->getName() ), array( 'doWork' => function() use ( $file, $params ) { return $file->transform( $params, File::RENDER_NOW ); @@ -394,7 +406,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath // If the worker that finished made this thumbnail then use it. // Otherwise, it probably made a different thumbnail for this file. return $file->getRepo()->fileExists( $thumbPath ) - ? $file->transform( $params ) + ? $file->transform( $params, File::RENDER_NOW ) : false; // retry once more in exclusive mode }, 'fallback' => function() {