我尝试使用memcache在PHP中缓存我的User对象,但是在使用PDO时出错。我添加了一个__sleep和一个__wakeup函数。
user.php的
/**
* @var PDO
*/
protected $db;
public function __construct()
{
$this->db = getInstanceOf('db');
}
public function __destruct()
{
}
public function __sleep()
{
return array('db');
}
public function __wakeup()
{
$this->db = getInstanceOf('db');
}
getInstanceOf('db')返回一个pdo对象......
返回以下错误:
PDOException:您无法在第41行的/var/www/test/User.php中序列化或反序列化PDO实例
答案 0 :(得分:11)
$this->db
可能是PDO对象。 PDO对象无法序列化。
删除__sleep()
上的该对象,并将其添加回__wakeup()
(这是您在以后的情况下已经执行的操作):
public function __sleep()
{
return array();
}
您无法序列化无法序列化的对象。但你试过了,所以你得到了例外。这基本上就是整个问题。只是不要告诉PHP序列化无法序列化的对象。