mysqli::reap_async_query
(mysqli_reap_async_query)从异步查询中获取结果
mysqli::reap_async_query
PHP 5 >= 5.3.0, PHP 7, PHP 8
mysqli::reap_async_query 是一个用于异步 MySQLi 查询的函数,适用于在异步查询执行完成后,获取其结果。它通常和 mysqli::poll 搭配使用,用于从先前发出的异步查询中收集结果。
public mysqli::reap_async_query(): mysqli_result|bool
mysqli_reap_async_query(mysqli $mysql): mysqli_result|bool
成功时返回 mysqli_result 对象(适用于 SELECT 查询),或在非 SELECT 查询中返回 true。失败时返回 false。
<?php $mysqli = new mysqli("localhost", "user", "password", "test"); <p>// 启用异步查询<br> $mysqli->query("SELECT SLEEP(2)", MYSQLI_ASYNC);</p> <p>$links = [$mysqli];<br> $errors = [];<br> $reject = [];</p> <p>// 等待查询完成<br> if (mysqli::poll($links, $errors, $reject, 3)) {<br> foreach ($links as $link) {<br> if ($result = $link->reap_async_query()) {<br> echo "异步查询成功。\n";<br> var_dump($result->fetch_row());<br> $result->close();<br> } else {<br> echo "异步查询失败。\n";<br> }<br> }<br> }<br> $mysqli->close();<br> ?><br>
本示例中首先创建了一个数据库连接,并通过 MYSQLI_ASYNC 发起一个异步查询(SELECT SLEEP(2) 模拟延迟)。随后使用 mysqli::poll 等待查询完成,完成后通过 reap_async_query() 收割查询结果。示例展示了异步查询的基本流程以及如何检查结果是否成功。