Драйвер Mysqlnd PHP 5.6 имеет возможность использовать запросы Async http://php.net/manual/en/mysqli.reap-async-query.php
Как использовать Async-запросы с PDO?
это не работает, код ( асинхронный mysql-запрос PHP ):
$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 с
Нет. Вы не можете использовать асинхронные запросы Mysql с PDO. Mysqli – единственный выбор.
Вы можете использовать для этого либо mysqli_multi_query
либо обычную последовательность query/poll/reap
.