1

こんにちは、php zend フレームワークを使用したアプリを持っています。Zend アプリで次のように AWS ElastiCache をセットアップします。

Bootstrap.php:

protected function _initMemcache()
{
    if (extension_loaded('memcache'))
    {
        // Configure caching backend strategy
        $cacheBackend = new Zend_Cache_Backend_Memcached(
            array(
                'servers' => array(
                    array(
                        'host' => 'xxxx.yyyy.qqq.rrr.cache.amazonaws.com',
                        'port' => '11211'
                    )
                    // Other servers here
                ),
                'compression' => true,
                'compatibility' => true
            )
        );

        // Configure caching frontend strategy
        $cacheFrontend = new Zend_Cache_Core(
            array(
                'caching' => true,
                'cache_id_prefix' => 'MyApp_',
                'write_control' => true,
                'automatic_serialization' => true,
                'ignore_user_abort' => true
            )
        );

        // Build a caching object
        $memcache = Zend_Cache::factory($cacheFrontend, $cacheBackend);

        Zend_Registry::set('cache', $memcache);
    } else {
        // Handle a non-existent extension here
    }
}

そして私のコントローラーで:

public function fetchfrontAction()
{
    $cache = Zend_Registry::get('cache');

    $catid = $this->_getParam('catId');

    $business = new Application_Model_Mapper_BusinessMapper();
    $businessReviewMapper = new Application_Model_Mapper_BusinessReviewsMapper();
    $count = 5;
    if (!$result = $cache->load('dataset')) {

        $result = $business->getFetchByCategory($catid,$count);

        for ($i = 0; $i < count($result); $i++) {

            $result[$i]['business_name_url'] =  $result[$i]['business_url'];
            $userBusinessReviews = $businessReviewMapper->getBusinessReview($result[$i]['business_id'],1);

            if(!is_null($userBusinessReviews)){
                $result[$i]['user_business_reviews'] = $userBusinessReviews;
            }
            $userImg = $this->view->getLoginUserImage(
                $result[$i]['user_business_reviews'][0]['social_id'],
                $result[$i]['user_business_reviews'][0]['login_type'],null,null,square);
            if (!is_null($userImg)) {
                $result[$i]['user_img'] = $userImg;
            }
        }
        $cache->save($result,'dataset');
    }

    $this->_helper->json($result);
}

問題はエラーなしで動作することですが、AWS から本当にキャッシュするかどうかをテストするにはどうすればよいですか? キャッシュを使用した場合と使用しない場合の時間を比較する方法はありますか? ありがとう

4

1 に答える 1

0

else最も簡単な方法は、節を に置き、if (!$result = $cache->load())使用Zend_Logしてキャッシュ ヒットをログに記録することです。

また、AWS は、キャッシュのコンテンツ/アクティビティを検査/管理するための管理コンソールを提供すると思います。しかし、その特定の点について大声で考えているだけです。

于 2013-03-14T04:19:52.687 に答える