【问题标题】:PDOException: You cannot serialize or unserialize PDO instancesPDOException:您不能序列化或反序列化 PDO 实例
【发布时间】:2012-01-31 19:26:28
【问题描述】:

我尝试使用 memcache 在 PHP 中缓存我的用户对象,但在使用 PDO 时出现错误。我添加了一个 __sleep 和一个 __wakeup 函数。

用户.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 实例

【问题讨论】:

    标签: php serialization pdo memcached


    【解决方案1】:

    $this->db 很可能是一个 PDO 对象。 PDO 对象不能被序列化。

    删除__sleep() 上的该对象并将其添加回__wakeup()(在后一种情况下您已经这样做了):

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2017-09-10
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多