2009-03-04 2 views
0

ello all im new to php and server scripting (исходящий из фона java/cpp) Мой вопрос: если мне нравится создавать какой-то один кеш тона, который будет хранить мои данные в памяти во всех веб-приложение жизнь, то, что когда я запустил веб-сервер, он запустит главный кеш , который будет обслуживать веб-приложение не внутри сеансов статического кеша как синглетная карта в C++/java, которая все время остается Какие у меня варианты?Как использовать глобальное кэширование в php?

ответ

3

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

0
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") ?>

Смежные вопросы