Php 警告:mysqli::eaw\u async\u query():连接未打开、清除或已关闭

Php 警告:mysqli::eaw\u async\u query():连接未打开、清除或已关闭,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试使用异步查询进行一些测试。我得到了这个结果: 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. 我在任何地方都找不到关于这个警告的任何信息。直到代码结束,我才关闭连接。这是什么意思

我正在尝试使用异步查询进行一些测试。我得到了这个结果:

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\u poll制作的代码

<?php    
// Queries
$sql0 = "SELECT * FROM flow01 where datetime = (select min(datetime) from flow01)";
$sql1 = "SELECT * FROM flow01 where datetime = (select max(datetime) from flow01)";
$sql2 = "SELECT * FROM hum01 where datetime = (select min(datetime) from hum01)";
$sql3 = "SELECT * FROM hum01 where datetime = (select max(datetime) from hum01)";

$all_links = array();
for($i=0; $i<=3; $i++) {
    $connect = mysqli_connect("localhost", "user", "password", "test"); 
    mysqli_query($connect, ${'sql' . $i}, MYSQLI_ASYNC);
    $all_links[] = $connect;
}

$processed = 0;
do {
    $links = $errors = $reject = array();
    foreach ($all_links as $connect) {
        $links[] = $errors[] = $reject[] = $connect;
    }
    if (!mysqli_poll($links, $errors, $reject, 2)) {
        continue;
    }
    foreach ($links as $connect) {
        if ($result = $connect->reap_async_query()) {
            $new = $result->fetch_row();
            print_r($new);
            mysqli_free_result($result);
        } else die(sprintf("MySQLi Error: %s", mysqli_error($connect)));
        $processed++;
    }
} while ($processed < count($all_links));

mysqli_close($connect);
?>

编辑:它似乎以任何顺序输入结果,这意味着它们经常是无序的。我尝试向我的表中添加另一列,其中包含一个数字,以指示它是什么表,然后我可以在显示结果之前对结果进行排序。如果有人知道更好的方法,请告诉我。

我没有使用过,但在获取结果之前,示例似乎使用了
mysqli_poll
()。在阅读结果之前,您可能需要等待结果准备就绪。有关如何执行多个并发查询,请参见该链接中的示例4。关于mysqli#u poll,您可能是对的。我在想办法。我会让你们知道事情的进展。谢谢你们!成功了。我的成绩很好。我不知道如何将你的评论标记为有用。是因为我的名声太低吗?
Array ( [0] => 2017-11-28 11:34:29 [1] => 13 ) Array ( [0] => 2017-12-20 12:11:12 [1] => 12 ) Array ( [0] => 2018-01-12 06:37:10 [1] => 0 ) Array ( [0] => 2017-11-28 11:34:01 [1] => 50 )