Umfrage
In diesem Artikel werden wir die Funktion mysqli_poll() in PHP besprechen, die zum Abfragen von Verbindungen verwendet wird.
Einführung in die mysqli_poll()-Funktion
Die Funktion mysqli_poll() ist eine integrierte Funktion in PHP, die zum Abfragen von Verbindungen dient. Diese Funktion kann verwendet werden, um zu prüfen, ob Daten auf einer Verbindung verfügbar sind, bevor daraus gelesen wird. Die Funktion mysqli_poll() kann in Kombination mit nicht-blockierendem I/O eingesetzt werden, um Ihre Anwendung reaktionsschneller zu machen.
Wichtig: mysqli_poll() funktioniert nur mit dem MySQLND-Treiber. Es ist nicht verfügbar, wenn der ältere libmysql-Treiber verwendet wird.
Verwendung der mysqli_poll()-Funktion
Die Verwendung der Funktion mysqli_poll() ist unkompliziert. Hier ist ein Beispiel:
Wie verwendet man die mysqli_poll()-Funktion?
<?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();
?>In diesem Beispiel erstellen wir zunächst ein neues MySQLi-Objekt mit dem Konstruktor mysqli(). Anschließend prüfen wir mit der Eigenschaft connect_errno, ob die Verbindung erfolgreich war. Falls ja, aktivieren wir den nicht-blockierenden Modus über mysqli::options(MYSQLI_OPT_NONBLOCK, 1), was für asynchrone Abfragen erforderlich ist. Danach erstellen wir ein Array von Verbindungen, das wir abfragen möchten, zusammen mit leeren Arrays für $error und $reject. Das Array $error wird mit Fehlermeldungen von Verbindungen gefüllt, die fehgeschlagen sind, während $reject Verbindungen enthält, die die Poll-Anforderung aktiv abgelehnt haben. Wir betreten eine Schleife, die so lange läuft, wie Verbindungen zum Abfragen vorhanden sind. Innerhalb der Schleife rufen wir mysqli_poll() mit dem Links-Array (by reference übergeben), den Fehler-/Ablehnungs-Arrays und einem Timeout von 10 Sekunden auf. Wenn auf einer oder mehreren Verbindungen Daten verfügbar sind, gibt mysqli_poll() die Anzahl der bereiten Verbindungen zurück und modifiziert das $links-Array so, dass es nur noch diese bereiten Verbindungen enthält. Wir durchlaufen dann die bereiten Verbindungen und rufen für jede die Methode reap_async_query() auf, um verfügbare Daten abzurufen. Wenn mysqli_poll() false zurückgibt, behandeln wir den Fehler oder das Timeout und beenden die Schleife. Abschließend schließen wir die Verbindung.
Hinweis: Für komplexe asynchrone Arbeitslasten sollten Sie moderne Alternativen wie ReactPHP oder Swoole in Betracht ziehen, die robustere Event-Loop-Architekturen für PHP bieten.
Fazit
Zusammenfassend lässt sich sagen, dass die Funktion mysqli_poll() ein leistungsstarkes Werkzeug zum Abfragen von Verbindungen in PHP ist. Durch das Verständnis der Funktionsweise können Sie Ihre Anwendung reaktionsschneller und effizienter gestalten, wenn Sie mit MySQL-Datenbanken arbeiten.
Praxis
Welche Hauptschritte sind für das Erstellen einer einfachen Umfrage mit PHP erforderlich?