PHP 5.4.33 Released

mysqli::poll

mysqli_poll

(PHP 5 >= 5.3.0)

mysqli::poll -- mysqli_pollVérifie l'état de la connexion

Description

Style orienté objet

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

Style procédural

int mysqli_poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )

Vérifie l'état de la connexion. Disponible uniquement avec mysqlnd. La méthode peut être utilisée comme statique.

Liste de paramètres

read

Liste des connexions à vérifier pour les résultats exceptionnels qui peuvent être lus.

error

Liste des connexions sur lesquelles une erreur est survenue, par exemple, des échecs de requêtes, ou des pertes de connexion.

reject

Liste des connexions rejetées car des requêtes non-asynchrones y ont été exécutées et pour lesquelles la fonction pourrait sortir des résultats.

sec

Nombre de secondes d'attente, doit être positif ou nul.

usec

Nombre de secondes d'attente, doit être positif ou nul.

Valeurs de retour

Retourne le nombre de connexions disponibles en cas de succès, FALSE sinon.

Exemples

Exemple #1 Exemple avec 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("Erreur MySQLi : %s"mysqli_error($link)));
        
$processed++;
    }
} while (
$processed count($all_links));
?>

L'exemple ci-dessus va afficher :

Array
(
    [0] => test
)

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
0
l_sanczyk at hotmail dot com
1 month 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