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

いいえ。PDO で Mysql 非同期クエリを使用することはできません。Mysqli が唯一の選択肢です。

mysqli_multi_queryこれまたは通常のquery/poll/reapシーケンスに使用できます。

于 2016-02-15T12:56:39.010 に答える