sondage
Dans cet article, nous allons examiner la fonction mysqli_poll() en PHP, qui sert à interroger les connexions.
Introduction à la fonction mysqli_poll()
La fonction mysqli_poll() est une fonction intégrée de PHP utilisée pour interroger les connexions. Cette fonction permet de vérifier s'il y a des données disponibles sur une connexion avant de les lire. La fonction mysqli_poll() peut être utilisée conjointement avec les E/S non bloquantes pour rendre votre application plus réactive.
Important : mysqli_poll() ne fonctionne qu'avec le pilote MySQLND. Elle n'est pas disponible lors de l'utilisation de l'ancien pilote libmysql.
Comment utiliser la fonction mysqli_poll()
L'utilisation de la fonction mysqli_poll() est simple. Voici un exemple :
Comment utiliser la fonction mysqli_poll() ?
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
// Enable non-blocking mode for asynchronous queries
$mysqli->options(MYSQLI_OPT_NONBLOCK, 1);
$links = [$mysqli];
$error = [];
$reject = [];
$timeout = 10;
while (!empty($links)) {
// mysqli_poll modifies the $links array by reference, keeping only ready connections
$ready = mysqli_poll($links, $error, $reject, $timeout, 0);
if ($ready === false) {
// Handle poll failure or timeout
echo "Poll failed or timed out.\n";
break;
}
foreach ($links as $link) {
if ($result = $link->reap_async_query()) {
// process the result set
$result->free();
} else {
// handle the error
echo "Query error: " . $link->error . "\n";
}
}
}
$mysqli->close();
?>Dans cet exemple, nous créons d'abord un nouvel objet MySQLi à l'aide du constructeur mysqli(). Nous vérifions ensuite si la connexion a réussi grâce à la propriété connect_errno. Si la connexion est réussie, nous activons le mode non bloquant via mysqli::options(MYSQLI_OPT_NONBLOCK, 1), ce qui est requis pour les requêtes asynchrones. Nous créons ensuite un tableau de connexions (links) que nous souhaitons interroger, ainsi que des tableaux $error et $reject vides. Le tableau $error sera rempli avec les messages d'erreur des connexions ayant échoué, tandis que $reject contiendra les connexions qui ont activement rejeté la demande d'interrogation. Nous entrons dans une boucle qui se poursuit tant qu'il reste des connexions à interroger. À l'intérieur de la boucle, nous appelons mysqli_poll() avec le tableau de connexions (passé par référence), les tableaux d'erreur/rejet, et un délai d'attente de 10 secondes. S'il y a des données disponibles sur une ou plusieurs connexions, mysqli_poll() renvoie le nombre de connexions prêtes et modifie le tableau $links pour ne contenir que ces connexions prêtes. Nous parcourons ensuite les connexions prêtes et appelons la méthode reap_async_query() sur chacune pour récupérer les données disponibles. Si mysqli_poll() renvoie false, nous gérons l'erreur ou le délai d'attente et nous sortons de la boucle. Enfin, nous fermons la connexion.
Remarque : Pour des charges de travail asynchrones complexes, envisagez des alternatives modernes comme ReactPHP ou Swoole, qui offrent des architectures de boucle d'événements plus robustes pour PHP.
Conclusion
En conclusion, la fonction mysqli_poll() est un outil puissant pour interroger les connexions en PHP. En comprenant comment utiliser cette fonction, vous pouvez rendre votre application plus réactive et plus efficace lors de vos interactions avec les bases de données MySQL.
Pratique
Quelles sont les principales étapes pour créer un sondage simple en PHP ?