1

こんにちは、私を助けてください!共有ホスティングにいるので、zendキャッシュファイルを使用したいです。問題は、キャッシュされた教義ファイルの結果を取得できないことです。data はそれが object であるためシリアル化されています。$cache->load($id) は配列として返されます。シリアル化を解除できません。あなたが私を助けたり、何かを提案したりしていただければ幸いです。ここに私のコード。

$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());
4

1 に答える 1

0

Doctrine2 モデルを Zend_Cache に保存しないでください: https://ssmusoke.com/2012/03/25/doctrine2-day-3-proxies-associations-relationships/

これは、バックグラウンドで Doctrine2 が使用するプロキシ クラスが Zend オートローダーによってアンシリアライズできないためです。

何かをキャッシュする場合は、モデルではなく出力をキャッシュしてください。

于 2012-05-28T07:24:56.790 に答える