Php 缓存反射对象
我正在尝试缓存反射对象。看看代码:Php 缓存反射对象,php,memcached,apc,Php,Memcached,Apc,我正在尝试缓存反射对象。看看代码: class A { public function __construct() { } } $memcache = new Memcache(); $memcache->addServer('127.0.0.1', 11211); $r = new ReflectionClass('A'); $memcache->set('a', $r); $r = $memcache->get('a'); $
class A {
public function __construct() {
}
}
$memcache = new Memcache();
$memcache->addServer('127.0.0.1', 11211);
$r = new ReflectionClass('A');
$memcache->set('a', $r);
$r = $memcache->get('a');
$a = $r->newInstanceArgs(array()); //here occurred the error
当我运行脚本时,它会生成:
PHP Fatal error: ReflectionClass::newInstanceArgs():
Internal error: Failed to retrieve the reflection object
我也尝试过使用APC以及序列化和非序列化,但没有任何改变。反射对象依赖于实例引用和虚拟属性;它们是PHP内部的,无法序列化
// Stores only serialized reference to ReflectionClass
$memcache->set('a', $r);
//=> O:15:"ReflectionClass":1:{s:4:"name";s:1:"A";}
// Retrieves only a class instance & 1 attribute
$r = $memcache->get('a');
//=> ReflectionClass { public $name = "A"; }
要从未序列化的类重建ReflectionClass,请使用给定名称重新初始化该类
$r = $memcache->get('a');
$r = new ReflectionClass($r->name);
$a = $r->newInstanceArgs(array());
反射对象依赖于实例引用和虚拟属性;它们是PHP内部的,无法序列化
// Stores only serialized reference to ReflectionClass
$memcache->set('a', $r);
//=> O:15:"ReflectionClass":1:{s:4:"name";s:1:"A";}
// Retrieves only a class instance & 1 attribute
$r = $memcache->get('a');
//=> ReflectionClass { public $name = "A"; }
要从未序列化的类重建ReflectionClass,请使用给定名称重新初始化该类
$r = $memcache->get('a');
$r = new ReflectionClass($r->name);
$a = $r->newInstanceArgs(array());
在将$r保存到memcache之前,
$r
是什么?($memcache->set('a',$r);
)错误消息中也缺少行号(在代码示例中,哪个消息与哪一行相关?)。你还说你尝试了一些东西,但没有提供任何代码,所以我们只能说:你做错了。不管你想做什么。请记住,阅读问题的人需要理解它;)@Evert的可能重复,你是对的:$r=newreflectionclass('A')$r=非序列化(序列化($r))$a=$r->newInstanceArgs(array());生成相同的错误在将其保存到memcache之前,$r
是什么?($memcache->set('a',$r);
)错误消息中也缺少行号(在代码示例中,哪个消息与哪一行相关?)。你还说你尝试了一些东西,但没有提供任何代码,所以我们只能说:你做错了。不管你想做什么。请记住,阅读问题的人需要理解它;)@Evert的可能重复,你是对的:$r=newreflectionclass('A')$r=非序列化(序列化($r))$a=$r->newInstanceArgs(array());产生相同的错误