Find()不返回带缓存的结果

时间:2013-01-02 01:39:18

标签: phalcon

我正在尝试将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 Model类会返回一个数据库查询,如果memcache服务器没有命中。似乎find()确实能找到并缓存它,但它并没有给我任何回报。我不明白Phalcon的缓存是如何工作的?或者我只是做错了什么?

1 个答案:

答案 0 :(得分:0)

问题已经解决。我和Andres(Phalcon的开发人员之一)一起工作,帮助他解决我遇到的问题。事实证明,代码中的代码比我预期的要深。

好消息是它已经解决,并被推到phalcon's github的0.8.0分支!别忘了重新编译!