我在使用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 :(得分: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 :(得分:1)
一般情况下,您无法存储"内部"的对象。 memcache中的类。这些对象包含无法序列化的数据。您必须从结果对象中获取数据并将其存储在PHP数组中。然后,您可以将该数组存储在memcache中。