2014-09-13 118 views
-2
臨時數據

我要尋找一個在CakePHP的一個解決方案,存儲和讀取臨時DATAS:保存使用CakePHP

我爲了顯示我的網站一些新聞閱讀其他網站的一些XML,但每個頁面加載,它會打電話給其他XML網站。

有沒有一種方法(memcached喜歡)來保存溫度。 CakePhp中的數據爲了存儲數據1小時並讀取溫度。數據顯示在我的網頁中;那麼在更新它們(用cron)後1小時?

謝謝。

回答

2

CakePHP Caching看起來你想要什麼。

你使用的緩存(Redis,Memcache等)將由你自己決定。將您的緩存設置爲最後一個小時,然後全部設置好。 (閱讀有關上述鏈接緩存的更多信息)。

如果您使用CakePHP 2.5+,則可以使用remember方法described here

public function newest() { 
    $model = $this; 
    return Cache::remember('newest_posts', function() use ($model){ 
     // get your data from whatever source here, and return it 
     return $model->getMyData(); 
    }, 'long'); 
} 

基本上,這只是檢查緩存鍵是否存在,如果沒有,運行一些代碼,以便再次填充它。

如果你是低於2.5,你可以做同樣的基本的東西,但沒有remember

public function newest() { 
    $result = Cache::read('newest_posts', 'long'); 
    if (!$result) { 
     // get your data from whatever source here, and write it 
     Cache::write('newest_posts', $this->getMyData(), 'long'); 
    } 
    return $result; 
} 

如果你沒有安裝一個高速緩存引擎或者是不​​想惹w^/你自己的服務器,有些公司可以用來緩存,你可以設置你的緩存設置來連接它們。 ObjectRocket(Redis)是我非常熟悉的,但我相信有很多。

有關CakePHP的許多令人敬畏的事情之一是,在這種情況下,無論您選擇的緩存類型/位置/配置如何,您的代碼都不會更改。

+1

謝謝戴夫! – zeflex 2014-09-13 18:24:37

+0

快速問題,緩存刷新本身或我需要配置一個cron來做到這一點?這時我使用文件緩存。 – zeflex 2014-09-16 18:06:52

+0

@zeflex - 您可以在緩存「持續時間」設置中設置緩存的長度:http://book.cakephp.org/2.0/en/core-libraries/caching.html#configuring-cache-class – Dave 2014-09-16 18:21:16