如何在 PHP PDO 中使用异步 Mysql 查询

Posted

技术标签:

【中文标题】如何在 PHP PDO 中使用异步 Mysql 查询【英文标题】:How to use async Mysql query with PHP PDO 【发布时间】:2016-05-26 08:37:08 【问题描述】:

mysqlnd 驱动 php 5.6 有机会使用 Async 查询http://php.net/manual/en/mysqli.reap-async-query.php

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

不行,代码(PHP asynchronous 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 秒

【问题讨论】:

看这个:***.com/questions/27240421/… 不行,代码 【参考方案1】:

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

您可以为此使用mysqli_multi_query 或常规query/poll/reap 序列。

【讨论】:

谢谢,我在 PDO 上有我的包装类,并找到了在 PDO 中使用异步的方法。 谢谢分享,但没有。

以上是关于如何在 PHP PDO 中使用异步 Mysql 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中使用带有 PDO 的 MySQL 用户函数?

如何在 Eclipse PHP 上使用 PDO MySQL 并在 PHP CLI 应用程序中运行?

如何使用 PDO 在 PHP 中获取结果数组?

如何使用 PDO 在 PHP 中获取结果数组?

php+mysql基础增删查改

如何使用PDO在PHP中获取结果数组?