7

Mysqlnd 驱动 PHP 5.6 有机会使用异步查询http://php.net/manual/en/mysqli.reap-async-query.php

如何在 PDO 中使用异步查询?

这是行不通的,代码(PHP 异步 mysql-query):

$dbConnectionOne = new \PDO($cnn0, $conf['user'], $conf['pass']);
$dbConnectionOne->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

$dbConnectionTwo =  new \PDO($cnn0, $conf['user'], $conf['pass']);
$dbConnectionTwo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$dbConnectionTwo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);


$t = time();
$synchStmt = $dbConnectionOne->prepare('SELECT sleep(2)');
$synchStmt->execute();

$asynchStmt = $dbConnectionTwo->prepare('SELECT sleep(1)');
$asynchStmt->execute();

$measurementConfiguration = array();
foreach ($synchStmt->fetchAll() as $synchStmtRow) {
   print_r($synchStmtRow);
}

while (($asynchStmtRow = $asynchStmt->fetch()) !== false) {
   print_r($asynchStmtRow);
}


$t = time() - $t;

echo 'query execute ', $t, ' sec',PHP_EOL;

除外 2 秒,但结果 = 3 秒

4

1 回答 1

6

不可以。不能将 Mysql 异步查询与 PDO 一起使用。Mysqli 是唯一的选择。

你可以使用这个或者mysqli_multi_query常规query/poll/reap序列。

于 2016-02-15T12:56:39.010 回答