cloneつづき

正直どうなってるんだかさっぱり分かってませんが、

class aho extends PDO {
    private $dsn, $user, $pass;
    function __construct($dsn, $user, $pass) {   
        parent::__construct($dsn, $user, $pass);
        $this->dsn = $dsn;
        $this->user = $user;
        $this->pass = $pass;
    }   
    function rewind() {   
        parent::__construct($this->dsn, $this->user, $this->pass);
    }   
}

$pdo = new aho('mysql:host=localhost;dbname=aho', 'hoge', 'fuga');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
for ($i = 0; $i < 10; ++$i) {
    $pid = pcntl_fork();
    if ($pid === 0) {
        $pdo->rewind();
        echo $pdo->query('show processlist')->rowCount()."\n";
        exit;
    } else if ($pid === -1) {
        echo "NG\n";
    } else {
        echo "OK, pid=$pid\n";
    }   
}
pcntl_wait($status);
exit;

こんなんでとりあえず動いてるみたい。PDO::__constructってどうなってるんだろう?? そこで例外飛んできたらかなり怖い。なんかきれいなやり方ご存知の方は教えてください。

ちなみに__sleep()すると

Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in /home/ichii386/fork.php:22
Stack trace:
#0 /home/ichii386/fork.php(22): PDO->__sleep()
#1 {main}
  thrown in /home/ichii386/fork.php on line 22

なんていうふうに例外が飛んできます。