作者alpe (薛丁格的貓)
看板PHP
標題Re: [請益] Phalcon Model Cache
時間Thu Jan 16 23:46:07 2014
※ 引述《b60413 (None)》之銘言:
: 按照Phalcon官方文件課程,
: 目前正學習到Cache這個章節,
: 主要問題是我使用內建的\Phalcon\Cache\Frontend\Data去儲存資料,
: 時常會導致記憶體不夠配置,
: (使用model取得table資料, 再用Paginator來做分頁, 資料約45萬筆)
不要啊!! 內建的 paginator 是抓row出來在做分頁. 那很恐怖的
1次查詢就吃了你5xxMB, 多個2~3個就爆了吧.
請自己重建一個 paginator 實做sql limit 吧!!
當初看paginator第一件事就是確認是那種方式
: 而實際資料只占用500多MB,
: 但仍然出現記憶體配置不足的狀況,
: 我想可能是物件的方式太占用記憶體,
印象中 ModelCache 是做DB中間層, 減少DB query次數
所以是吧model 資料存起來, 但你要用的時候, 還是會
轉回去 model\result 物件, 並不會減少你記憶體用量
可能要轉cache 還多用了一些
: 我想他也許沒這麼聰明,
: 可能要自己先將資料轉換成Json格式才有辦法做儲存,
他留了很多彈性, 所以可以選擇要用那種格式放到Cache
這是 FrontEnd/Cache/Data 的用處, 決定要放那種資料形式
$di->set('cache', function() {
$redis = new Redis();
$redis->connect($host, $cport);
$frontend = new Phalcon\Cache\Frontend\Data(array('lifetime' =>
$lifetime));
$cache = new Phalcon\Cache\Backend\Redis($frontend, array('redis' =>
$redis));
return $cache;
});
: (在find時, 有增加參數hydration => Resultset::HYDRATE_ARRAYS, 再用json_encode)
: 但結果仍然是一個空物件,
: 我想也許是我快取的方法使用不對,
: 於是改用modelsCache的方式去實作,
: 此時系統卻出現下面錯誤,
: Phalcon\\Mvc\\Model\\Query::execute():
: Call to undefined method setisfresh() on class stdClass
: 想請問,
: Phalcon提供的Cache,
: 有沒有Phalcon官方文件,
: 範例時常有問題八卦...囧rz
對. 1.2.4 file 處理有個 getRealType... 回傳 Null
啥! 去爬 source 發現沒實做完! 啊老師的, 還"建議"要用這個!
還有 dispatcher 那邊的鬼
--
人大抵上既沒有自己想像中那麼幸福,也沒有那麼不幸…重要的是,
是否對於生存抱著希望或已厭倦
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.105.62
推 b60413:感謝提醒分業的實作, 會想這測試 01/20 12:56
→ b60413:主要是因為想要了解這套Framework的效能 01/20 12:56
→ b60413:所以是抱持著很懷疑的心態去做這樣的測試 01/20 12:57
→ b60413:當時並沒有先看該Framework的Source 01/20 12:57