这个问题真是奇妙,且听我细细说来:已确定memcached安装使用正常(已良好运行几个月之久)
最近想要做点优化,将一些数据也写入memcache
其中包含几个对象
其它几个对象写入十分正常,但是有一个对象死活写不进去
示例代码如下:
$obj = new obj();
$objStr = serialize($obj);
$mem->set('obj_1',$objStr);
print_r($mem->get('obj_1'));
echo '<br>';
print_r($objStr);对于写入正常的对象来说 上述代码输出两段相同的字串,字串的内容当然是$objStr。而当要对某一对象进行如上述操作时呢,问题来了,print_r($mem->get('obj_1'));打印出来为空。而我试着将打印出来的$objStr字串直接复制到程序里,让其写入memcache,成功写入!试了一晚上 百思不得其解,为什么这个对象序列化后如法写入memecache呢?该对象结构如下:
obj_2
{
$a;
$b;
$c;
$d = obj_3;
$e = obj_4;
$f = obj_5;
}怀疑是不是这个对象里的成员包含对象,导致的呢?
但是序列化之后$objStr是一个字符串,根据PHP的说法,“可以存储于任何地方”,直接拷贝到程序里可以写入,由程序生成的值却无法写入,这是什么原因呢?
请高手指教!
最近想要做点优化,将一些数据也写入memcache
其中包含几个对象
其它几个对象写入十分正常,但是有一个对象死活写不进去
示例代码如下:
$obj = new obj();
$objStr = serialize($obj);
$mem->set('obj_1',$objStr);
print_r($mem->get('obj_1'));
echo '<br>';
print_r($objStr);对于写入正常的对象来说 上述代码输出两段相同的字串,字串的内容当然是$objStr。而当要对某一对象进行如上述操作时呢,问题来了,print_r($mem->get('obj_1'));打印出来为空。而我试着将打印出来的$objStr字串直接复制到程序里,让其写入memcache,成功写入!试了一晚上 百思不得其解,为什么这个对象序列化后如法写入memecache呢?该对象结构如下:
obj_2
{
$a;
$b;
$c;
$d = obj_3;
$e = obj_4;
$f = obj_5;
}怀疑是不是这个对象里的成员包含对象,导致的呢?
但是序列化之后$objStr是一个字符串,根据PHP的说法,“可以存储于任何地方”,直接拷贝到程序里可以写入,由程序生成的值却无法写入,这是什么原因呢?
请高手指教!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货