RedisException
read error on connection RedisException thrown with message "read error on connection" Stacktrace: #6 RedisException in /home/deploy/EHungry-9-simon/Web/classes/Cache.class.php:140 #5 Redis:get in /home/deploy/EHungry-9-simon/Web/classes/Cache.class.php:140 #4 Cache:Get in /home/deploy/EHungry-9-simon/Web/classes/Cache.class.php:120 #3 Cache:GetType in /home/deploy/EHungry-9-simon/Web/classes/Cache.class.php:106 #2 Cache:GetArray in /home/deploy/EHungry-9-simon/Web/classes/CustomNavigationTab.class.php:14 #1 CustomNavigationTab:getAllForAccount in /home/deploy/EHungry-9-simon/Web/controllers/customer.php:828 #0 require in /home/deploy/EHungry-9-simon/Web/index.php:30
Stack frames (7)
6
RedisException
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
140
5
Redis
get
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
140
4
Cache
Get
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
120
3
Cache
GetType
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
106
2
Cache
GetArray
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
CustomNavigationTab.class.php
14
1
CustomNavigationTab
getAllForAccount
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
controllers
/
customer.php
828
0
require
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
index.php
30
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
        if ($r) {
            $uco = unserialize($r);
            $typeFunc = 'is_'.$type;
            if ($typeFunc($uco) || ($allowNull && is_null($uco))) {
                return $uco;
            }
        }
        return $notFoundResult;
    }
 
    public static function Get($key) {
        if (array_key_exists($key, static::$requestCache)) {
            $r = static::$requestCache[$key];
            $r = static::afterGet($r);
            App::cacheHit($key);
            return $r;
        }
 
        if ($i = static::getInstance()) {
            if ($r = $i->get($key)) {
                //if a key has been used more than 3 times, store it in the in-memory request cache.
                //We don't store every cache load in-memory, otherwise we might run out of memory on some pages (eg if they load every account)
                if (!array_key_exists($key, static::$requestCount)) {
                    static::$requestCount[$key] = 0;
                }
                static::$requestCount[$key]++;
                if (static::$requestCount[$key] > 3) {
                    static::$requestCache[$key] = $r;
                }
                $r = static::afterGet($r);
                App::cacheHit($key);
            } else {
                App::cacheMiss($key);
            }
            return $r;
        }
        return false;
    }
 
    /**
Arguments
  1. "read error on connection"
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
        if ($r) {
            $uco = unserialize($r);
            $typeFunc = 'is_'.$type;
            if ($typeFunc($uco) || ($allowNull && is_null($uco))) {
                return $uco;
            }
        }
        return $notFoundResult;
    }
 
    public static function Get($key) {
        if (array_key_exists($key, static::$requestCache)) {
            $r = static::$requestCache[$key];
            $r = static::afterGet($r);
            App::cacheHit($key);
            return $r;
        }
 
        if ($i = static::getInstance()) {
            if ($r = $i->get($key)) {
                //if a key has been used more than 3 times, store it in the in-memory request cache.
                //We don't store every cache load in-memory, otherwise we might run out of memory on some pages (eg if they load every account)
                if (!array_key_exists($key, static::$requestCount)) {
                    static::$requestCount[$key] = 0;
                }
                static::$requestCount[$key]++;
                if (static::$requestCount[$key] > 3) {
                    static::$requestCache[$key] = $r;
                }
                $r = static::afterGet($r);
                App::cacheHit($key);
            } else {
                App::cacheMiss($key);
            }
            return $r;
        }
        return false;
    }
 
    /**
Arguments
  1. "navtabs_30063"
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
     * @param  string $key
     * @param bool    $allowNull
     * @return bool|array|null
     */
    public static function GetArray($key, $allowNull = false) {
        return static::GetType('array', $key, $allowNull);
    }
 
    /**
     * This one can either return a boolean when key is found, or a null if key isn't found. So you need to check the
     * result with with is_bool() or is_null().
     * @param string $key The key to lookup
     * @return bool|null
     */
    public static function GetBoolean($key) {
        return static::GetType('bool', $key, false, null);
    }
 
    private static function GetType($type, $key, $allowNull, $notFoundResult = false) {
        $r = static::Get($key);
        if ($r) {
            $uco = unserialize($r);
            $typeFunc = 'is_'.$type;
            if ($typeFunc($uco) || ($allowNull && is_null($uco))) {
                return $uco;
            }
        }
        return $notFoundResult;
    }
 
    public static function Get($key) {
        if (array_key_exists($key, static::$requestCache)) {
            $r = static::$requestCache[$key];
            $r = static::afterGet($r);
            App::cacheHit($key);
            return $r;
        }
 
        if ($i = static::getInstance()) {
            if ($r = $i->get($key)) {
Arguments
  1. "navtabs_30063"
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
Cache.class.php
    }
 
    /**
     * Returns object if found in cache, otherwise false. Can also return null if found in cache and null allowed
     * @param  string $key
     * @param bool    $allowNull
     * @return bool|object|null
     */
    public static function GetObject($key, $allowNull = false) {
        return static::GetType('object', $key, $allowNull);
    }
 
    /**
     * Returns array if found in cache, otherwise false. Can also return null if found in cache and null allowed
     * @param  string $key
     * @param bool    $allowNull
     * @return bool|array|null
     */
    public static function GetArray($key, $allowNull = false) {
        return static::GetType('array', $key, $allowNull);
    }
 
    /**
     * This one can either return a boolean when key is found, or a null if key isn't found. So you need to check the
     * result with with is_bool() or is_null().
     * @param string $key The key to lookup
     * @return bool|null
     */
    public static function GetBoolean($key) {
        return static::GetType('bool', $key, false, null);
    }
 
    private static function GetType($type, $key, $allowNull, $notFoundResult = false) {
        $r = static::Get($key);
        if ($r) {
            $uco = unserialize($r);
            $typeFunc = 'is_'.$type;
            if ($typeFunc($uco) || ($allowNull && is_null($uco))) {
                return $uco;
            }
Arguments
  1. "array"
    
  2. "navtabs_30063"
    
  3. false
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
classes
/
CustomNavigationTab.class.php
<?
/**
 * @property int $priority
 * @property string $display_name
 * @property string $url
 * @property int $account_id
 * @property int $page_id
 * @property bool $open_new_tab [default: 0]
 */
class CustomNavigationTab extends BaseClass {
 
    public static function getAllForAccount($aid = -1) {
        $cacheKey = 'navtabs_'.$aid;
        $co       = Cache::GetArray($cacheKey);
        if ($co) {
            return $co;
        }
 
        $db_conn = DB::conn();
        $rbs     = [];
        $sql     = "SELECT * FROM ".CustomNavigationTab::getTableName()." WHERE account_id = ? ORDER BY priority ASC";
        $db_conn->bindParameter($sql, 1, $aid, "integer");
        $result = $db_conn->query($sql);
        if ($result && $result->rowCount() > 0) {
            while ($row = $result->fetch()) {
                $r = new CustomNavigationTab();
                $r->loadFromArray($row, true);
                $rbs[] = $r;
            }
        }
 
        Cache::SetArray($cacheKey, $rbs);
 
        return $rbs;
    }
 
    public static function deleteAllForAccount($aid) {
        self::where('account_id', $aid)->delete();
        Cache::Delete('navtabs_'.$aid);
    }
Arguments
  1. "navtabs_30063"
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
controllers
/
customer.php
    }
 
    $restaurantRequiredPages = [
        'login',
        'customerorders'
    ];
    if (is_null($restaurant) && in_array($_REQUEST['form'], $restaurantRequiredPages)) {
        redirectTo('home');
    }
 
    $modelPath = CORE_PATH . 'model4.0/customer/'.$_REQUEST['form'].'.php';
} else {
    $_REQUEST['mobiledetect'] = new Mobile_Detect;
}
if (is_readable($modelPath)) {
    include_once($modelPath);
}
App::debugbarTime("model '{$_REQUEST['form']}'");
 
$custom_nav = CustomNavigationTab::getAllForAccount($account->getId());
 
$view2HideRightColumns = ['checkout', 'dashboard', 'customerdetails', 'customerorders',
                                'mydeliveryaddresses', 'emailpreferences', 'mycoupons', 'mycreditcards', 'mypassword',
                                'customerorderdetails', 'editcustomer', 'adddeliveryaddress',
                                'editlocation', 'orderconfirmation','viewcart', 'map', 'validatecallback'];
if (in_array($_REQUEST['form'], $view2HideRightColumns)) {
    $hideRightColumn = true;
}
 
$myAccountPages = ['accountsettings', 'dashboard', 'customerdetails', 'customerorders', 'editaddress', 'editcustomer', 'mydeliveryaddresses', 'editlocation', 'emailpreferences', 'mycoupons', 'mycreditcards', 'mypassword', 'adddeliveryaddress', 'map', 'myloyalty'];
if (in_array($_REQUEST['form'], $myAccountPages)) {
    $isMyAccountPage = true;
}
 
if (!isset($cart) || !is_object($cart)) {
    $GLOBALS['cart'] = \Cart::getCurrent();
}
 
//unset callback data in the event someone didn't hit the callback validation page
if (!in_array($_REQUEST['form'], ['checkout', 'nosuchpage', 'validatecallback', 'viewdeliveryzone'])) {
Arguments
  1. 30063
    
/
home
/
deploy
/
EHungry-9-simon
/
Web
/
index.php
App::startTime();
 
ErrorHandlers::register();
 
// Global.php is the core setup file for the application
App::debugbarTime('Global.php');
require(dirname(__DIR__) . '/PHP/Global.php');
App::debugbarTime('Global.php');
/** @var string $controller The main controller - defined at /PHP/Global.php */
 
App::debugbarTime('Sentry - controller');
ErrorHandlers::sentryInit($controller); //doesn't always do much - not every controller has a Sentry project
App::debugbarTime('Sentry - controller');
 
App::debugbarTime("controller: $controller");
apache_note('AppController', $controller);
if (file_exists(CORE_PATH."lib/helpers/$controller.php")) {
    require CORE_PATH."lib/helpers/$controller.php";
}
require CORE_PATH."controllers/$controller.php";
App::debugbarTime("controller: $controller");
 
Arguments
  1. "/home/deploy/EHungry-9-simon/Web/controllers/customer.php"
    

Environment & details:

Key Value
aid
"restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
empty
empty
Key Value
PHPSESSID
"gvton7bs3up5r4lsgm18ee5e4r"
Key Value
loc
"en_US"
customer_account_id
30063
cart
Cart {}
restaurant_id
11268
redirect_form
"checkout"
eot
1756236300
menu_id
14186
Key Value
UNIQUE_ID
"aKy-bA5l9VK2Fimq56-WRgAAAAM"
SCRIPT_URL
"/restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
SCRIPT_URI
"http://www.springroll.com.9.simon.ehungry.net/restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
HTTP_HOST
"www.springroll.com.9.simon.ehungry.net"
HTTP_X_REAL_IP
"216.73.216.114"
HTTP_X_FORWARDED_FOR
"216.73.216.114"
HTTP_X_CONFKEY
"Main_Domain:6462"
HTTP_SCHEME
"https"
HTTP_EHENV
"TODO"
HTTP_CONNECTION
"close"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_COOKIE
"PHPSESSID=gvton7bs3up5r4lsgm18ee5e4r"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache/2.4.62 () mod_wsgi/4.6.5 Python/3.7 PHP/7.2.34"
SERVER_NAME
"www.springroll.com.9.simon.ehungry.net"
SERVER_ADDR
"127.0.0.1"
SERVER_PORT
"80"
REMOTE_ADDR
"127.0.0.1"
DOCUMENT_ROOT
"/home/deploy/EHungry-9-simon/Web"
REQUEST_SCHEME
"http"
CONTEXT_PREFIX
""
CONTEXT_DOCUMENT_ROOT
"/home/deploy/EHungry-9-simon/Web"
SERVER_ADMIN
"root@localhost"
SCRIPT_FILENAME
"/home/deploy/EHungry-9-simon/Web/index.php"
REMOTE_PORT
"54486"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.0"
REQUEST_METHOD
"GET"
QUERY_STRING
"aid=restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
REQUEST_URI
"/restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
SCRIPT_NAME
"/restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
PHP_SELF
"/restaurant/charliechowdragongrill/order/main/soups/hot-sour-soup"
REQUEST_TIME_FLOAT
1756151404.591
REQUEST_TIME
1756151404
empty
0. Whoops\Handler\PrettyPageHandler

Fatal error: Uncaught RedisException: Connection lost in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0