PDOException:您无法序列化或反序列化PDO实例

时间:2012-01-02 12:17:16

标签: php serialization pdo memcached

我尝试使用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实例

1 个答案:

答案 0 :(得分:11)

$this->db可能是PDO对象。 PDO对象无法序列化。

删除__sleep()上的该对象,并将其添加回__wakeup()(这是您在以后的情况下已经执行的操作):

public function __sleep()
{
    return array();
}

您无法序列化无法序列化的对象。但你试过了,所以你得到了例外。这基本上就是整个问题。只是不要告诉PHP序列化无法序列化的对象。