文字

mysqli::poll

mysqli_poll

(PHP 5 >= 5.3.0)

mysqli::poll -- mysqli_pollPoll connections

说明

面向对象风格

public static 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 ] )

Poll connections. 仅可用于 mysqlnd。 The method can be used as static.

参数

read

List of connections to check for outstanding results that can be read.

error

List of connections on which an error occured, for example, query failure or lost connection.

reject

List of connections rejected because no asynchronous query has been run on for which the function could poll results.

sec

Number of seconds to wait, must be non-negative.

usec

Number of microseconds to wait, must be non-negative.

返回值

Returns number of ready connections upon success, FALSE otherwise.

范例

Example #1 A mysqli_poll() example

<?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() - Get result from async query

用户评论:

[#1] l_sanczyk at hotmail dot com [2014-07-21 19:56:26]

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.

上一篇: 下一篇: