2012-05-25 4 views
1

Привет, вы можете мне помочь! Я хочу использовать кэш-файл zend с im в режиме общего хостинга. Таким образом, проблема заключается в том, что я не могу получить файл кэш-файла доктрины. данные сериализованы, потому что это объект. $ cache-> load ($ id) return as array Я не могу выполнить повторный инициализацию. Пожалуйста, я буду рад, если вы поможете мне или предложите что-нибудь. Вот мой код.unserialize cache zend doctrine2

$request = $this->getRequest(); 
$slug = $request->getParam('slug'); 

$front = Zend_Controller_Front::getInstance(); 
$bootstrap= $front->getParam('bootstrap'); 

$cache = $bootstrap->getResource('cachemanager')->getCache('content'); 

$cacheId = md5('news_' . $slug); 
if (!($news = **unserialize($cache->load($cacheId))**)) { 

$news = $this->_em->getRepository('Custom\Entity\News') 
       ->findOneBySlug($slug); 
    $cache->save($news, $cacheId); 
var_dump('if u see me that mean not from cached'); 
} 

$page = new Zend_Navigation_Page_Mvc(array( 
     'label'   => $news[0]->getTitle(), 
     'route'  => 'news-view', 
    'module'  => 'news', 
    'controller' => 'index', 
    'action'  => 'view', 
    'params'  => array(
     'slug' => $news[0]->getAlias()) 
     ) 
); 
$page->setActive(false); 
$this->_helper->navigation->getContainer() 
       ->findOneBy('uri', '/category/' . $news[0]->getCategory()->getSlug()) 
       ->addPage($page); 

$this->view->ogpa = new OpenGraphProtocolArticle(); 
$this->view->news = $news; 
$this->view->headTitle($news[0]->getTitle()); 
+0

, пожалуйста, помогите! здесь кэшированные данные, которые я получил: –

ответ

0

Не сохранять любые модели Doctrine2 в Zend_Cache см: https://ssmusoke.com/2012/03/25/doctrine2-day-3-proxies-associations-relationships/

Это происходит потому, что в фоновом режиме Doctrine2 использует прокси-классы, которые не могут быть десериализуются на авто погрузчика Zend, что приведет к вам большое grief ...

Если вы хотите что-то кешировать, кешируйте выход не моделями.

+0

, можете ли вы предоставить какой-либо пример о кэшировании вывода для рамки zend? – Optimus

+0

благодарит вас @ssmusoke за ваш ответ. Это решение, которое я наконец принял. но выход кеширования не останавливает запросы базы данных для этого ресурса каждый раз, когда пользователь запрашивает то же самое. Но вы с тех пор, как я принимал участие в хостинге, я не могу сделать лучше ... –

+0

@Optimus просто создайте помощник вида, в который вы помещаете кеш-код, а затем в своем представлении используйте 'code' cacheOutput() -> start ('news_'. md5 ($ this-> slug)):?> данные, которые я хочу кэшировать cacheOutput() -> end(); ?>

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