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() 收割查询结果。示例展示了异步查询的基本流程以及如何检查结果是否成功。