From 47470fef2ea124390953eb5e55fe888b4c260fcf Mon Sep 17 00:00:00 2001 From: Riccardo Di Dato Date: Tue, 20 Sep 2022 00:53:06 +0200 Subject: [PATCH] Fix cache image --- app/private/lib/gui/ImageCacheManager.php | 78 +++++++++++++++++------ app/public/getImage.php | 2 +- app/public/index.php | 24 +++---- 3 files changed, 71 insertions(+), 33 deletions(-) diff --git a/app/private/lib/gui/ImageCacheManager.php b/app/private/lib/gui/ImageCacheManager.php index 32d3a92..bf261f6 100644 --- a/app/private/lib/gui/ImageCacheManager.php +++ b/app/private/lib/gui/ImageCacheManager.php @@ -6,22 +6,58 @@ */ class ImageCacheManager { + private static $memcached = null; + + const EXPIRATION_SECONDS = 2592000; // 30 * 24 * 60 * 60 -> 30 gg + + private static function getMemcached() { + if (is_null(self::$memcached)) { + self::$memcached = new Memcached(); + self::$memcached->addServer('memcached', 11211); + } + return self::$memcached; + } + private static function getImageKey(MediaModel $media, $size) { + return self::getImageKeyById($media->id, $size); + } + private static function getImageKeyById(string $id, $size) { + return $id."-".$size."-image"; + } + + private static function getMimeKey(MediaModel $media, $size) { + return self::getMimeKeyById($media->id, $size); + } + private static function getMimeKeyById(string $id, $size) { + return $id."-".$size."-mime"; + } + public static function cacheImage(MediaModel $media, $size){ self::checkValidModel($media); - $cachedPath = self::getImageCachePath($media->id, $size); - $mimePath = self::getImageMimePath($media->id, $size); + // $cachedPath = self::getImageCachePath($media->id, $size); + // $mimePath = self::getImageMimePath($media->id, $size); $originalFilePath = self::getOriginalPath($media); - if ( SFSManager::fileExists($cachedPath) ){ - SFSManager::deleteFile($cachedPath); - SFSManager::deleteFile($mimePath); - } - if (!is_dir(pathinfo($cachedPath,PATHINFO_DIRNAME))){ - SFSManager::createDirectory(pathinfo($cachedPath,PATHINFO_DIRNAME)); - } - SFSManager::writeFile(mime_content_type($originalFilePath), $mimePath); - SFSManager::writeFile(self::getImageContent($media, $size), $cachedPath); + // if ( SFSManager::fileExists($cachedPath) ){ + // SFSManager::deleteFile($cachedPath); + // SFSManager::deleteFile($mimePath); + // } + // if (!is_dir(pathinfo($cachedPath,PATHINFO_DIRNAME))){ + // SFSManager::createDirectory(pathinfo($cachedPath,PATHINFO_DIRNAME)); + // } + // SFSManager::writeFile(mime_content_type($originalFilePath), $mimePath); + // SFSManager::writeFile(self::getImageContent($media, $size), $cachedPath); + self::getMemcached()->set( + self::getMimeKey($media, $size), + mime_content_type($originalFilePath), + self::EXPIRATION_SECONDS + ); + self::getMemcached()->set( + self::getImageKey($media, $size), + self::getImageContent($media, $size), + self::EXPIRATION_SECONDS + ); + } /** @@ -30,8 +66,9 @@ class ImageCacheManager { * @param int $size */ public static function isCached($id, $size){ - $cachedPath = self::getImageCachePath($id, $size); - return SFSManager::fileExists($cachedPath); + return self::getMemcached()->get(self::getImageKeyById($id, $size)) ? true : false; + // $cachedPath = self::getImageCachePath($id, $size); + // return SFSManager::fileExists($cachedPath); } @@ -43,8 +80,9 @@ class ImageCacheManager { * @return string */ public static function getMimeType($id, $size){ - $mimePath = self::getImageMimePath($id, $size); - return file_get_contents($mimePath); + return self::getMemcached()->get(self::getMimeKeyById($id, $size)); + // $mimePath = self::getImageMimePath($id, $size); + // return file_get_contents($mimePath); } /** @@ -54,14 +92,14 @@ class ImageCacheManager { * @return string */ public static function getContent($id, $size){ - $cachedPath = self::getImageCachePath($id, $size); - return file_get_contents($cachedPath); + return self::getMemcached()->get(self::getImageKeyById($id, $size)); + // $cachedPath = self::getImageCachePath($id, $size); + // return file_get_contents($cachedPath); } - public static function printCachedMedia($id, $size){ - $cachedPath = self::getImageCachePath($id, $size); + public static function printCachedMedia($id, $size) { header('Content-type: '.self::getMimeType($id, $size)); - return readfile($cachedPath); + echo self::getContent($id, $size); } diff --git a/app/public/getImage.php b/app/public/getImage.php index 8596ff1..643c340 100644 --- a/app/public/getImage.php +++ b/app/public/getImage.php @@ -17,7 +17,7 @@ if (array_key_exists("id",$_GET)) { $size=intval($_GET['size']); } - if ($size == 3){ + if ($size !== MediaImage::SIZE_ORIGINAL){ if (!ImageCacheManager::isCached($_GET["id"], $size)){ $img = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>$_GET['id'])); if (!is_null($img)){ diff --git a/app/public/index.php b/app/public/index.php index 42b652c..c9c4e36 100644 --- a/app/public/index.php +++ b/app/public/index.php @@ -209,7 +209,7 @@ catch (Exception $ex){ if(!is_null($media)){ ?>
- renderMedia();?> + renderMedia(['size' => MediaImage::SIZE_BIG]);?>
" class="newsSummary"> -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_BIG]);?>
@@ -276,7 +276,7 @@ catch (Exception $ex){
-
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_BIG]);?>
@@ -305,7 +305,7 @@ catch (Exception $ex){
-
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_BIG]);?>
@@ -334,7 +334,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -358,7 +358,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -381,7 +381,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -430,7 +430,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -455,7 +455,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -479,7 +479,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -503,7 +503,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>
@@ -525,7 +525,7 @@ catch (Exception $ex){ -
renderMedia();?>
+
renderMedia(['size' => MediaImage::SIZE_MEDIUM]);?>