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

错误/异常

当没有传递 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
)

参见