PHP MySQLi 函数

PHP mysqli::poll() / mysqli_poll() 函数用于轮询连接。该方法可以用作静态方法。

注意:仅适用于 mysqlnd。

语法

//面向对象风格
public mysqli::poll(read, error, reject, seconds, microseconds)

//面向过程风格
mysqli_poll(mysql, read, error, reject, seconds, microseconds)

参数

mysql 必填。 仅适用于面向过程风格:指定 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。
read 必填。 指定连接列表以检查是否有可读取的未完成结果。
错误 必需。 指定发生错误的连接列表。例如 - 查询失败或丢失连接。
拒绝 必需。 指定被拒绝的连接列表,因为尚未运行该函数可以轮询结果的异步查询。
必填。 指定等待的最大秒数。它必须是非负数。
微秒 可选。 指定等待的最大微秒数。必须为非负数。

返回值

成功时返回就绪连接数,否则返回 false。

示例:mysqli_poll() 示例

下面的示例显示了 mysqli_poll() 函数的用法。

<?php
$link1 = mysqli_connect();
$link1->query("SELECT 'demo'", 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, 0, 50000)) {
    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] => demo
)