mysqli::poll
(mysqli_poll)民意调查连接
PHP 5.3.0 及以上版本
mysqli::poll 函数用于轮询一组 MySQLi 连接,等待这些连接中的任意一个变为可读、可写或发生错误。这对于实现非阻塞数据库操作,尤其是当有多个并行查询时非常有用。
public static mysqli::poll(array &$read, array &$error, array &$reject, int $sec, int $usec = 0): int|false
返回轮询到的连接数(整型)。如果出错,返回 false。
$links = [ new mysqli('host1', 'user', 'pass', 'db'), new mysqli('host2', 'user', 'pass', 'db') ]; <p>$read = $links;<br> $error = [];<br> $reject = [];</p> <p>$num_changed = mysqli::poll($read, $error, $reject, 1);</p> <p>if ($num_changed === false) {<br> echo "轮询失败。";<br> } elseif ($num_changed > 0) {<br> echo "有 {$num_changed} 个连接状态已变化。\n";<br> foreach ($read as $readable) {<br> // 处理可读连接<br> echo "连接可读。\n";<br> }<br> foreach ($error as $errored) {<br> // 处理出错连接<br> echo "连接出错。\n";<br> }<br> foreach ($reject as $rejected) {<br> // 处理被拒连接<br> echo "连接被拒绝。\n";<br> }<br> } else {<br> echo "没有连接状态变化。";<br> }<br>
该示例中创建了两个 MySQLi 连接,并使用 mysqli::poll 轮询这些连接。函数会阻塞最多1秒,等待连接的状态变化。轮询返回后,根据不同状态对连接进行相应处理。此方法适用于异步查询场景,帮助开发者管理多个数据库连接的非阻塞IO。