From 06e210a0b9f3bea058cd6d8b7cf1c1995052faaf Mon Sep 17 00:00:00 2001 From: zebardy Date: Mon, 18 Nov 2019 22:07:52 +0000 Subject: [PATCH] try storing app in apcu --- app.php | 54 +++++++++++++++------------- controllers/LoginController.php | 2 +- middleware/ApiKeyAuthMiddleware.php | 2 +- middleware/SessionAuthMiddleware.php | 2 +- services/SessionService.php | 12 +++++++ 5 files changed, 45 insertions(+), 27 deletions(-) diff --git a/app.php b/app.php index d649fef3..296923ee 100644 --- a/app.php +++ b/app.php @@ -49,30 +49,36 @@ if (GROCY_DISABLE_AUTH === true) } } -// Setup base application -$appContainer = new \Slim\Container([ - 'settings' => [ - 'displayErrorDetails' => true, - 'determineRouteBeforeAppMiddleware' => true - ], - 'view' => function($container) - { - return new \Slim\Views\Blade(__DIR__ . '/views', GROCY_DATAPATH . '/viewcache'); - }, - 'LoginControllerInstance' => function($container) - { - return new LoginController($container, 'grocy_session'); - }, - 'UrlManager' => function($container) - { - return new UrlManager(GROCY_BASE_URL); - }, - 'ApiKeyHeaderName' => function($container) - { - return 'GROCY-API-KEY'; - } -]); -$app = new \Slim\App($appContainer); +if (!apcu_exists("grocy_app")) +{ + + // Setup base application + $appContainer = new \Slim\Container([ + 'settings' => [ + 'displayErrorDetails' => true, + 'determineRouteBeforeAppMiddleware' => true + ], + 'view' => function($container) + { + return new \Slim\Views\Blade(__DIR__ . '/views', GROCY_DATAPATH . '/viewcache'); + }, + 'LoginControllerInstance' => function($container) + { + return new LoginController($container, 'grocy_session'); + }, + 'UrlManager' => function($container) + { + return new UrlManager(GROCY_BASE_URL); + }, + 'ApiKeyHeaderName' => function($container) + { + return 'GROCY-API-KEY'; + } + ]); + apcu_store("grocy_app", new \Slim\App($appContainer)); +} + +$app = apcu_fetch("grocy_app"); #$fp = fopen('/www/data/sql.log', 'a'); #fwrite($fp, "!!!Starting up loading app\n"); diff --git a/controllers/LoginController.php b/controllers/LoginController.php index 2d6e2967..3162dec8 100644 --- a/controllers/LoginController.php +++ b/controllers/LoginController.php @@ -11,7 +11,7 @@ class LoginController extends BaseController public function __construct(\Slim\Container $container, string $sessionCookieName) { parent::__construct($container); - $this->SessionService = new SessionService(); + $this->SessionService = SessionService::getInstance(); $this->SessionCookieName = $sessionCookieName; } diff --git a/middleware/ApiKeyAuthMiddleware.php b/middleware/ApiKeyAuthMiddleware.php index 07722081..0e034a2f 100644 --- a/middleware/ApiKeyAuthMiddleware.php +++ b/middleware/ApiKeyAuthMiddleware.php @@ -33,7 +33,7 @@ class ApiKeyAuthMiddleware extends BaseMiddleware $validApiKey = true; $usedApiKey = null; - $sessionService = new SessionService(); + $sessionService = SessionService::getInstance(); if (!isset($_COOKIE[$this->SessionCookieName]) || !$sessionService->IsValidSession($_COOKIE[$this->SessionCookieName])) { $validSession = false; diff --git a/middleware/SessionAuthMiddleware.php b/middleware/SessionAuthMiddleware.php index 5cf436cc..9d5109bb 100644 --- a/middleware/SessionAuthMiddleware.php +++ b/middleware/SessionAuthMiddleware.php @@ -19,7 +19,7 @@ class SessionAuthMiddleware extends BaseMiddleware { $route = $request->getAttribute('route'); $routeName = $route->getName(); - $sessionService = new SessionService(); + $sessionService = SessionService::getInstance(); if ($routeName === 'root') { diff --git a/services/SessionService.php b/services/SessionService.php index 301366e7..b98d8973 100644 --- a/services/SessionService.php +++ b/services/SessionService.php @@ -4,6 +4,18 @@ namespace Grocy\Services; class SessionService extends BaseService { + private static $instance = null; + + public function getInstance() + { + if (self::$instance == null) + { + self::$instance = new self(); + } + + return self::$instance; + } + /** * @return boolean */