2012-01-02 11 views
8

Ho provato a memorizzare nella cache l'oggetto Utente in PHP con memcache, ma durante l'utilizzo di PDO viene visualizzato un errore. Ho aggiunto una funzione __sleep e __wakeup.PDOException: non è possibile serializzare o unserializzare istanze PDO

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') restituisce un oggetto pdo ...

restituisce il seguente errore:

PDOException: You cannot serialize or unserialize PDO instances in /var/www/test/User.php on line 41

risposta

11

E 'probabile che $this->db è un Oggetto DOP. Gli oggetti PDO non possono essere serializzati.

rimuovere tale oggetto sul __sleep() e aggiungerlo indietro a __wakeup() (che è quello che già fa in quest'ultimo caso):

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

Non si può serializzare gli oggetti che non possono essere serializzati. Ma ci hai provato, quindi hai ottenuto l'eccezione. Questo è fondamentalmente l'intero problema. Basta non dire a PHP di serializzare oggetti che non possono essere serializzati.

+0

Grazie mille;) ha funzionato perfettamente ... – MaxiNet

Problemi correlati