Zend framework 取消序列化缓存zend doctrine2
嗨,你能帮我吗!我想使用zend缓存文件,因为im在共享主机中。 所以问题是我无法检索缓存的条令文件结果。数据已序列化,因为它是对象$缓存->加载$id作为数组返回,我无法取消序列化返回。 如果你能帮助我或提出建议,我会很高兴的。这是我的密码Zend framework 取消序列化缓存zend doctrine2,zend-framework,serialization,doctrine-orm,Zend Framework,Serialization,Doctrine Orm,嗨,你能帮我吗!我想使用zend缓存文件,因为im在共享主机中。 所以问题是我无法检索缓存的条令文件结果。数据已序列化,因为它是对象$缓存->加载$id作为数组返回,我无法取消序列化返回。 如果你能帮助我或提出建议,我会很高兴的。这是我的密码 $request = $this->getRequest(); $slug = $request->getParam('slug'); $front = Zend_Controller_Front::getInstance();
$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());
不要在Zend_缓存中保存任何Doctrine2模型请参见: 这是因为在后台Doctrine2使用了Zend自动加载程序无法取消序列化的代理类,这将给您带来巨大的痛苦
如果要缓存任何内容,请缓存输出,而不是模型 请帮忙!这里是我得到的缓存数据:您能提供任何关于zend framework输出缓存的示例吗?谢谢@ssmusoke的回答。这是我最终采用的解决方案。但缓存输出不会在用户每次请求相同内容时停止对此资源的数据库查询。但你说得对,因为我在共享主机中做得太好了…@Optimus只需创建一个视图帮助器,在其中放置缓存选项,然后在视图中使用代码数据,我想缓存代码类自定义\视图\帮助器\缓存输出扩展Zend \视图\帮助器\抽象{/***@var Zend_View_Interface/public$View;/***/public function cacheOutput{$front=Zend_Controller_front::getInstance;$bootstrap=$front->getParam'bootstrap';$cache=$bootstrap->getResource'cachemanager'->getCache'content';返回$cache;}/**设置视图字段*@param$view Zend_view_Interface*/公共函数setViewZend_view_Interface$view{$this->view=$view;}这是我的观点helper@MarcelDjaman感谢您提供的代码,但是在呈现视图之前是否执行了操作?我的意思是您可以缓存视图,但实体将始终加载到控制器操作中。