我正在尝试在我的应用程序中实现 memcache,但遇到了一些奇怪的问题。如果我在没有缓存的情况下运行 find(),那么我找不到任何结果。但是,如果我运行相同的查询(刷新页面),那么我会得到我期望的结果。
这是我的代码:
<?php
//Set the models cache service
$di->set('modelsCache', function(){
// Cache data for one day by default
$frontCache = new \Phalcon\Cache\Frontend\Data(array(
"lifetime" => 86400
));
// Memcached connection settings
$cache = new \Phalcon\Cache\Backend\Memcache($frontCache, array(
"host" => "localhost",
"port" => "11211"
));
return $cache;
});
<?php
class VideosController extends IndexController {
public function viewAction() {
/**
* This will always return an array;
* param 0 will always be the int
*/
$params = $this->dispatcher->getParams();
$id = $params[0];
$cacheName = 'videoForView_'.$id;
try {
$video = Videos::findFirst(array(
'id='.$id,
'cache' => array(
'key' => $this->router->getControllerName().'_'.$this->router->getActionName().'_'.$id
)
));
$this->view->setVar('video', $video);
} catch(Exception $e) {
echo '<pre>';
var_dump($e);
exit;
}
}
}
我假设如果内存缓存服务器没有命中,Phalcon 模型类会返回一个数据库查询。似乎 find() 确实找到了一些东西并缓存了它,但它没有返回任何东西。我不了解缓存在 Phalcon 中的工作原理吗?还是我只是做错了什么?