PHP Australia Conference 2015

mysqli::poll

mysqli_poll

(PHP 5 >= 5.3.0)

mysqli::poll -- mysqli_pollОпрос подключений

Описание

Объектно-ориентированный стиль

public int mysqli::poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )

Процедурный стиль

int mysqli_poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )
Внимание

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Опрос подключений. Доступно только с расширением mysqlnd. Метод может использоваться как статический.

Список параметров

read

error

reject

sec

Число секунд ожидания, должно быть неотрицательным.

usec

Число миллисекунд ожидания, должно быть неотрицательным.

Возвращаемые значения

Возвращает количество готовых к работе соединений в случае успеха, FALSE в случае неудачи.

Примеры

Пример #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$reject1)) {
        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: %s"mysqli_error($link)));
        
$processed++;
    }
} while (
$processed count($all_links));
?>

Результат выполнения данного примера:

Array
(
    [0] => test
)

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
0
l_sanczyk at hotmail dot com
2 months ago
You can use the following code to execute, for example, 10 simultaneous queries:

$query = "SELECT `field1`, `field2` FROM `table` WHERE `field1`='something'";

$all_links = array();
for($i=0; $i<10; $i++) {
    $link = mysqli_connect("your.mysql.server.here","your@user","pa$$w0rd",DataBase_Name");
    $link->query($query, MYSQLI_ASYNC);
    $all_links[] = $link;
}

$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));

NOTE: If you get a "Warning: mysqli::query() expects parameter 2 to be long, string given" you have a mysqlnd installation or configuration issue.
To Top