我正在将memcache添加到我的网站中,而我遇到的问题是我正在缓存该对象,因此很容易在其他对象或页面中使用。问题是我在加载对象时缓存了对象,因此如果我对对象中的变量进行了更改,则不会将其传递给其他页面。我是否遗漏了某些东西,或者我是否真的需要在所有处理后保存缓存的对象?
// 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 :(得分:3)
Memcached将数据存储为序列化实体,因此需要提交任何更改。当脚本使用PHP register_shutdown函数完成执行时,您可以尝试编写一个对象来提交数据。