我要尋找一個在CakePHP的一個解決方案,存儲和讀取臨時DATAS:保存使用CakePHP
我爲了顯示我的網站一些新聞閱讀其他網站的一些XML,但每個頁面加載,它會打電話給其他XML網站。
有沒有一種方法(memcached喜歡)來保存溫度。 CakePhp中的數據爲了存儲數據1小時並讀取溫度。數據顯示在我的網頁中;那麼在更新它們(用cron)後1小時?
謝謝。
我要尋找一個在CakePHP的一個解決方案,存儲和讀取臨時DATAS:保存使用CakePHP
我爲了顯示我的網站一些新聞閱讀其他網站的一些XML,但每個頁面加載,它會打電話給其他XML網站。
有沒有一種方法(memcached喜歡)來保存溫度。 CakePhp中的數據爲了存儲數據1小時並讀取溫度。數據顯示在我的網頁中;那麼在更新它們(用cron)後1小時?
謝謝。
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的許多令人敬畏的事情之一是,在這種情況下,無論您選擇的緩存類型/位置/配置如何,您的代碼都不會更改。
謝謝戴夫! – zeflex 2014-09-13 18:24:37
快速問題,緩存刷新本身或我需要配置一個cron來做到這一點?這時我使用文件緩存。 – zeflex 2014-09-16 18:06:52
@zeflex - 您可以在緩存「持續時間」設置中設置緩存的長度:http://book.cakephp.org/2.0/en/core-libraries/caching.html#configuring-cache-class – Dave 2014-09-16 18:21:16