Как использовать глобальное кеширование в php? - PullRequest
0 голосов
/ 04 марта 2009

Привет всем Я новичок в PHP и сценариев сервера (исходя из фона Java / CPP) мой вопрос, если я хочу иметь возможность создать какой-то однотональный кеш, который будет хранить данные в памяти во всех веб-приложениях жизнь, то, что, когда я запускаю веб-сервер, он запускает основной кэш который будет обслуживать веб-приложение не внутри статического кеша сессий как синглетная карта в C ++ / Java, которая оставляет все время какие у меня варианты?

Ответы [ 2 ]

3 голосов
/ 04 марта 2009

Для этого в PHP вам понадобится APC , который в наши дни входит в стандартную комплектацию PHP (и будет стандартным для PHP 6) - все, что вам нужно сделать, это включить его в конфигурации - или memcached , особенно если у вас есть какое-то кластерное решение.

0 голосов
/ 19 мая 2010
function resetCache(){
    restoreCacheSession();
    session_unset();
    restoreTrueSession();
}

function restoreCacheSession(){

    $sessionId = session_id();
    if(strlen($sessionId))  {
        $origSetting = ini_get('session.use_cookies');
        session_write_close();
    }

    session_id('cache');
    ini_set('session.use_cookies', false);
    session_start();

    if($sessionId)
    {
        $_SESSION["_trueSessionId"] = $sessionId;
        $_SESSION["_trueSessionSettings"] = $origSetting;
    }
}

function restoreTrueSession(){
    if(isset($_SESSION["_trueSessionId"])){
        $sessionId = $_SESSION["_trueSessionId"];
        $origSetting = $_SESSION["_trueSessionId"];
    }

    session_write_close();

    if(isset($sessionId)) { 
        ini_set('session.use_cookies', $origSetting);
        session_id($sessionId);
        session_start();
    } 
    elseif(isset($_COOKIE['phpSESSID'])){ 
        session_id($_COOKIE['phpSESSID']);
        session_start();
    } 
    else { 
        session_start();
        session_unset();
        session_regenerate_id();
    }   
}

function cache($var, $value = null){
    restoreCacheSession();
    if(!isset($value)){
        if(isset($_SESSION[$var])){
            $result = $_SESSION[$var];
        }

        restoreTrueSession();
        return isset($result)?$result:null;
    }

    $_SESSION[$var] = $value;

    restoreTrueSession();
}

Чтобы установить переменную в кеше, вам нужно только <?php cache("yourvarname",yourvarvalue) ?> Чтобы получить значение переменной в кеше: <?php cache("yourvarname") ?> Для сброса кеша <?php resetCache("yourvarname") ?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...