pthreads v3 / PHP 7 / PDOException:不能序列化或反序列化PDO实例



我正在使用 PHP 7 的 pthreads v3 扩展,我有一个 WORKER 类和一个 JOB 类

我在下面使用的代码应该在旧版本中工作,因为我看到很多人使用它。但现在它不再了。

我的目标是在 JOB 类中使用 PDO 数据库连接。我尝试了很多东西,除了使用 MySQLi 扩展之外似乎什么都不起作用,但我不想使用它。

所以我的问题是:我必须做什么才能为每个 JOB 类创建 PDO 连接,而不会出现我上面提到的致命错误?

我在网上多次看到此代码作为错误的解决方案:

"致命错误:未捕获的 PDOException:无法在 ..."中序列化或反序列化 PDO 实例"。

class MyWorker extends Worker{

    public static $pdo;

    public function __construct() {
        $this->hostname = DBHOST;
        $this->username = DBUSER;
        $this->password = DBPASS;
        $this->database = DBNAME;
    }

    public function run() {
            self::$pdo = new PDO(
                "mysql:host=".$this->hostname.";port=3306;dbname=".$this->database, $this->username, $this->password);
    }

    public function getConnection() {
        return self::$pdo;
    }

}




class Job extends Threaded
{

    public function run()
    {
        $this->db = $this->worker->getConnection();  // HERE IS THE ERROR!
        // code, that connects to database ...

    }
}

经过几个小时的尝试,我发现了错误。

错误在于,我调用了 $this->db,即使此属性在类中甚至不存在:

$this->db = $this->worker->getConnection();

相反,你只需要声明一个新变量,例如$db

$db = $this->worker->getConnection();

也许有人也会浪费一些时间来寻找这个小错误,我可以帮助这篇文章:)

最新更新