2012-02-22 86 views
1

我正在將memcache添加到我的網站中,並且我遇到的問題是我緩存對象,因此它易於在其他對象或頁面中使用。問題是我在加載對象時緩存對象,所以如果我對對象中的變量進行了更改,則不會將其傳遞到其他頁面上。我是否錯過了某些東西,或者是否真的必須在所有處理之後保存緩存的對象?使用Memcache緩存PHP類

// ON THE PAGE I FIRST CALL 
$objState = $gb->objCache->State('1'); 
echo "Name:" . $objState->get_Name() . "<br>"; 
$objState->set_Name('New Name'); 

// ON ANOTHER PAGE I CALL IT AGAIN 
$objState = $gb->objCache->State('1'); 
echo "Name:" . $objState->get_Name() . "<br>"; 
$objState->set_Name('New Name 2'); 

// THE FUNCTION THAT I CALL TO GET THE STATE CLASS/OBJECT 
function State($id, $reload=false) { 
    $objState = null; 

    $cached = false; 
    if (is_object($this->gb->memcache)) 
    $cached = $this->gb->memcache->get('objState_' . $id . '_' . getCompanyUniqueID()); 
    if ($cached !== FALSE && is_object($cached) && !$reload) { 
    $objState = $cached; 
    } else {    
     $objState = new State($id); 

     // Store generated XML for 5 minutes (300 seconds) 
    if (is_object($this->gb->memcache)) 
     $this->gb->memcache->set('objState_' . $id . '_' . getCompanyUniqueID(), $objState, 0, 300); // Don't worry about third argument, it controls compression 
    } 

    return $objState; 
} 
+0

如果您希望它保留在memcache上,則必須對memcache進行任何更改。 – 2012-02-22 07:14:51

回答

3

Memcached中存儲數據的序列化實體,所以任何更改都需要提交。當腳本使用PHP register_shutdown函數完成執行時,您可以嘗試編寫一個對象來提交數據。