C O N O S C E N Z A
web data management
Il nostro è un team che si occupa ormai da piu' di un decennio della risoluzione delle problematiche informatiche, in particolare ci piace poter offrire la nostra competenza in ambito telematico, dalla progettazione su misura della vostra infrastruttura web, alla realizzazione del vostro software e dei vostri portali.
Zend Framework

zend controller page cache

25/01/2009


 Esempio per la realizazione di un sistema di cache basato sul metodo page di zend_cache.

se la pagina in questione è cachata non avviene per niente il dispach della pagine, viceversa viene presa direttamente col file get content php e salvata nella directory di cache.

l'id di cache sarà l'url univoco. 

Example of cache system based on page method of zend_cache.

If the request pase is cached is called cached one without dispach, if not  the request page is  get wiht php fiel get content and saved in cache dir.

the unique cache id will be the page url.

 


    require_once 'Zend/Cache.php';
        $id =  str_replace("/".PATH_FRONT."/",'',$_SERVER["REQUEST_URI"]);
        $id =  str_replace('/','',$id);
        if ($id != ""){
        $frontendOptions = array(
        'ignore_user_abort' => 'true',
        'lifetime' => 7200, // 2 ore di cache?
        'automatic_serialization' => true
        );
        }
        else{
        $id='home';
        $frontendOptions = array('ignore_user_abort' => 'true',
        'lifetime' => 3600, // 1 ore di cache sulla home??
        'automatic_serialization' => true
        );
        }
$backendOptions = array(
    'cache_dir' => './tmp_imgGal/' // Directory where to put the cache files
);

// getting a Zend_Cache_Core object
$cache = Zend_Cache::factory('Page',
                             'File',
                             $frontendOptions,
                             $backendOptions);
        
         $cache->start();
        
        //$id = 'cache'; // cache id of "what we want to cache"


if (!($data = $cache->load("$id"))) {
    // cache miss

        
        require_once 'Zend/Filter/StripTags.php';

        
        
        
        
        if ($_SERVER["HTTP_USER_AGENT"] == "")
        {
       
           $frontController = Zend_Controller_Front::getInstance();
        
        
        $frontController->dispatch();
        }else{
        
        $data=file_get_contents("http://localhost".$_SERVER["REQUEST_URI"]);
           }
           $cache->save($data);
           
  }        
    echo($data);