接続を問い合わせる

# 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`

  クエリが失敗した、あるいは接続が切断されたなどのエラーが発生した接続のリスト。

`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