【发布时间】:2016-06-06 13:59:44
【问题描述】:
我正在使用 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 ...
}
}
【问题讨论】:
标签: php multithreading serialization pdo pthreads