2012-07-01 57 views
1

我對Memcached有點麻煩。可接受的Memcached用法

我有下面這段代碼:

if(!$Z->get('user')) { 
    $Z->set('user', $hs->load_hs_main($_GET['from'], $_GET['table'])); 
} 

$je = $Z->get('user') ? $Z->get('user') : $hs->load_hs_main($_GET['from'], $_GET['table']); 

什麼$Z->get('user')$je應該是一個MySQLi的結果對象。這會產生像print_r這樣的奇怪效果,但它看起來不正確。

我想檢查一個由memcached創建的對象是否存在,如果它存在則使用它..但是如果它不存在,請設置它。

+0

我以某種方式可以序列化一個mysqli結果對象。 – ThiefMaster

回答

3

正確的方式來獲得緩存中的項目或創建/從別的地方,如果它不存在,加載它是這樣的:

$user = $Z->get('user'); // get it from cache, returns falsy value if not found 
if(!$user) { // not found 
    $user = $hs->load_hs_main(...); // load the element from somewhere else 
    $Z->set('user', $user); // cache it 
} 
// here $user always exists 
1

一般來說,你不能存儲的「內部」類的對象在memcache中。這些對象包含無法序列化的數據。您必須從結果對象中獲取數據並將其存儲在PHP數組中。然後,您可以將該數組存儲在memcache中。