【发布时间】:2018-06-21 05:30:57
【问题描述】:
我正在尝试使用异步查询进行一些测试。我得到了这个结果:
Array ( [0] => 2017-11-28 11:34:01 [1] => 50 )
Warning: mysqli::reap_async_query(): Connection not opened, clear or has been closed in /var/www/testasync.php on line 24.
我无法在任何地方找到有关此警告的任何信息。直到我的代码结束时,我才会关闭我的连接。什么意思?
这是我的代码:
<?php
$connect = mysqli_connect("localhost", "user", "password", "test");
if (!$connect) {
die('Could not connect: ' . mysqli_error($connect));
}
// Queries
$sql0 = "SELECT * FROM flow01 where datetime = (select min(datetime) from flow01)";
mysqli_query($connect, $sql0, MYSQLI_ASYNC);
$sql1 = "SELECT * FROM flow01 where datetime = (select max(datetime) from flow01)";
mysqli_query($connect, $sql1, MYSQLI_ASYNC);
$sql2 = "SELECT * FROM hum01 where datetime = (select min(datetime) from hum01)";
mysqli_query($connect, $sql2, MYSQLI_ASYNC);
$sql3 = "SELECT * FROM hum01 where datetime = (select max(datetime) from hum01)";
mysqli_query($connect, $sql3, MYSQLI_ASYNC);
// Results
$i = 0;
foreach ($connect as $result) {
if ($result = $connect->reap_async_query()) {
print_r($result->fetch_row());
mysqli_free_result($result);
$i++;
}
}
mysqli_close($connect);
?>
【问题讨论】:
-
不是我用过的东西,但这些例子似乎在获取结果之前使用了
mysqli_poll(php.net/manual/en/mysqli.poll.php)。也许您必须等待结果准备好才能阅读它们。 -
请参阅该链接中的示例 #4,了解如何执行多个并发查询。
-
您对 mysqli_poll 的看法可能是正确的。我试图弄清楚。我会告诉你进展如何。
-
谢谢你们!那行得通。我得到了很好的结果。我不知道如何将您的 cmets 标记为有用。是不是因为我的名声太低了?