我试图缓存我的用户对象在PHP与memcache,但我得到一个错误,而使用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:你不能序列化或反序列化PDO实例在/var/www/test/user .php第41行
$this->db
很可能是PDO对象。PDO对象不能序列化。
删除__sleep()
上的对象并将其添加回__wakeup()
(这是您在后面的情况下已经做的):
public function __sleep()
{
return array();
}
不能序列化不能序列化的对象。但你试过了,所以你得到了例外。这基本上就是整个问题。只是不要让PHP序列化那些不能序列化的对象。