gpt4 book ai didi

php - 警告:mysqli::reap_async_query():连接未打开、清除或已关闭

转载 作者:行者123 更新时间:2023-11-29 03:19:06 24 4
gpt4 key购买 nike

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

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    
// 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);
?>

结果是:

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 ) 

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

关于php - 警告:mysqli::reap_async_query():连接未打开、清除或已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48214637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com