2012-05-25 3 views
1

안녕하세요. 제발 도와주세요. 공유 호스팅에서 메신저부터 zend 캐시 파일을 사용하고 싶습니다. 그래서 문제는 캐시 된 교리 파일 결과를 검색 할 수 없습니다. 데이터가 직렬화되었습니다. 객체입니다. $ cache-> load ($ id) 배열을 반환합니다. 다시 직렬화 할 수 없습니다. 도와 주거나 제안 할 수 있다면 기꺼이 보내주십시오. 여기 내 코드.캐시를 직렬화하지 마십시오. 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

Zend_Cache의 모든 Doctrine2 모델을 참조 저장하지 마십시오 : 백그라운드에서 Doctrine2 당신의 큰 거래를하게됩니다 젠드 자동 로더로 unserialize 할 수없는 프록시 클래스를 사용하기 때문에 https://ssmusoke.com/2012/03/25/doctrine2-day-3-proxies-associations-relationships/

을이입니다 슬픔 ...

캐시에 저장하려면 모델이 아닌 출력을 캐시하십시오.

+0

젠드 프레임 워크의 출력 캐싱에 대한 예제를 제공 할 수 있습니까? – Optimus

+0

답장을 보내 주셔서 감사합니다. 그것은 내가 마침내 채택한 해결책입니다. 캐싱 출력은 사용자가 동일한 요청을 할 때마다이 리소스에 대한 데이터베이스 쿼리를 중지하지 않습니다. 하지만 당신이 바로 공유 호스팅에서 나는 더 나은 일을 할 수 있습니다. –

+0

@Optimus는 캐시 옵션을 넣은 다음 뷰를 사용하는 뷰 도우미를 만듭니다. 'code' cacheOutput -> start ('news_'. md5 ($ this-> slug)))?> 데이터를 캐쉬하고 싶습니다. cacheOutput() -> end(); ?>