轮询连接

# mysqli::poll

# mysqli_poll

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::poll -- mysqli_poll — 轮询连接

### 说明

面向对象风格

public static function mysqli::poll(
?array `&$read`,
?array `&$error`,
array `&$reject`,
int `$seconds`,
int `$microseconds` = 0
): int|false

过程化风格

function mysqli_poll(
?array `&$read`,
?array `&$error`,
array `&$reject`,
int `$seconds`,
int `$microseconds` = 0
): int|false

轮询连接。此方法是 static 的。

> 注意:

> 仅可用于 mysqlnd。

### 参数

`read`

  要检测是否存在可以读取的结果集的连接的数组。

`error`

  发生错误的，例如：SQL 语句执行失败或者已经断开的 连接的数组。

`reject`

  没有可以读取的结果集的连接 的数组。

`seconds`

  秒为单位的最大等待时间，不可以为负数。

`microseconds`

  微秒为单位的最大等待时间，不可以为负数。

### 返回值

成功执行则返回存在可以读取结果集的连接数量， 否则 `false`。

### 错误／异常

当没有传递 `read` 和 `error` 参数时抛出 ValueError 异常。

### 更新日志

版本 | 说明
--- | ---
8.3.0 | 现在，当没有传递 `read` 和 `error` 参数时抛出 ValueError 异常。

### 示例

示例 #1 mysqli_poll() 示例

    <?php
    $link1 = mysqli_connect();
    $link1->query("SELECT 'test'", MYSQLI_ASYNC);
    $all_links = array($link1);
    $processed = 0;
    do {
        $links = $errors = $reject = array();
        foreach ($all_links as $link) {
            $links[] = $errors[] = $reject[] = $link;
        }
        if (!mysqli_poll($links, $errors, $reject, 1)) {
            continue;
        }
        foreach ($links as $link) {
            if ($result = $link->reap_async_query()) {
                print_r($result->fetch_row());
                if (is_object($result))
                    mysqli_free_result($result);
            } else die(sprintf("MySQLi Error: %s", mysqli_error($link)));
            $processed++;
        }
    } while ($processed < count($all_links));
    ?>

以上示例会输出：

    Array
    (
        [0] => test
    )

### 参见

- mysqli_query() - 对数据库执行查询
- mysqli_reap_async_query() - 获取异步查询的结果

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open