Signatur
Beschreibung
eio_nreqs() liefert die Anzahl der Requests, die von der EIO-Erweiterung noch zu verarbeiten sind. Das umfasst alle Requests, die in die Warteschlange eingereiht wurden, aber noch nicht abgeschlossen sind.
Die Funktion ist nützlich, um den aktuellen Zustand der EIO-Ereignisschleife zu überwachen. So kann man beispielsweise prüfen, ob noch offene asynchrone I/O-Operationen existieren, bevor das Programm beendet wird oder in einen Wartezustand übergeht.
Sie wird häufig in Kombination mit eio_event_loop() oder einer externen Ereignisschleife (z. B. libevent oder libev) eingesetzt, um die Schleife so lange am Laufen zu halten, wie noch unerledigte Requests vorhanden sind.
Rückgabewert
0 zurückgegeben.Beispiele
Einfache Prüfung auf ausstehende EIO-Requests
<?php
// Voraussetzung: eio-Extension ist installiert und geladen
// Einen asynchronen Stat-Request einstellen
eio_stat('/tmp', function ($data, $result) {
echo "Stat abgeschlossen.\n";
});
// Anzahl der noch zu verarbeitenden Requests ausgeben
$pending = eio_nreqs();
echo "Ausstehende Requests vor Event-Loop: " . $pending . "\n";
// Event-Loop ausführen, bis alle Requests abgearbeitet sind
eio_event_loop();
echo "Ausstehende Requests nach Event-Loop: " . eio_nreqs() . "\n";
Event-Loop solange laufen lassen, wie Requests ausstehen
<?php
// Mehrere asynchrone Lese-Operationen einstellen
for ($i = 0; $i < 3; $i++) {
eio_open('/tmp/testfile_' . $i . '.txt', EIO_O_RDONLY, 0, null, function ($data, $result) use ($i) {
echo "Datei geöffnet, fd=" . $result . "\n";
if ($result > 0) {
eio_close($result);
}
});
}
// Manuelles Polling: solange Requests vorhanden sind, Event-Loop aufrufen
while (eio_nreqs() > 0) {
eio_poll();
}
echo "Alle Requests abgearbeitet.\n";
// Wichtig · Fallstricke
Hinweis: eio_nreqs() gibt nur die Anzahl der noch nicht abgeschlossenen Requests zurück. Requests, die bereits fertig sind, aber deren Callback noch nicht aufgerufen wurde, können ebenfalls einbezogen sein – das genaue Verhalten hängt vom Zeitpunkt des Aufrufs relativ zur Ereignisschleife ab.
Die EIO-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat über PECL installiert werden. Sie ist primär für Unix-ähnliche Systeme (Linux, macOS) ausgelegt.