アプリケーションに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;
}
}
}
memcacheサーバーでヒットがない場合、PhalconModelクラスがデータベースクエリを返すと想定しています。find()は何かを見つけてキャッシュしているようですが、何も返されません。Phalconでキャッシングがどのように機能するか理解していませんか?それとも私は何か間違ったことをしているだけですか?