mysqli::poll

mysqli_poll

接続を問い合わせる

説明

オブジェクト指向型

public static intfalse mysqli::poll(
    arraynull &$read,
    arraynull &$error,
    array &$reject,
    int $seconds,
    int $microseconds = 0
)

手続き型

intfalse mysqli_poll(
    arraynull &$read,
    arraynull &$error,
    array &$reject,
    int $seconds,
    int $microseconds = 0
)

接続を問い合わせます。 このメソッドは static メソッドとして使えます。

注意:

mysqlnd でのみ使用可能です。

パラメータ

read

読み込める結果が残っている接続のリスト。

error

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

reject

関数から結果を取得できるような非同期クエリが実行されていないという理由で、 拒否された接続のリスト。

seconds

待ち続ける秒数の最大。非負の数でなければなりません。

microseconds

待ち続けるマイクロ秒数の最大。非負の数でなければなりません。

戻り値

成功した場合に使用できる接続の数、それ以外の場合に false を返します。

エラー / 例外

readerror を両方渡さなかった場合には、 ValueError がスローされます。

変更履歴

バージョン 説明
8.3.0 readerror を両方渡さなかった場合には、 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