如何使用PHP PDO进行异步Mysql查询

Ale*_*rev 6 php mysqli pdo asynchronous mysqli-multi-query

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;
Run Code Online (Sandbox Code Playgroud)

除外2秒但结果= 3秒

You*_*nse 6

不可以.您不能对PDO使用Mysql异步查询.Mysqli是唯一的选择.

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