Start · Sprachen · PHP · Referenz · eio_nop

eio_nop

Funktion

Führt einen vollständigen asynchronen Request-Zyklus aus, ohne eine eigentliche I/O-Aktion durchzuführen (No-Operation).

seit PHP 0.3.1 Kategorie: io

Signatur

eio_nop(int $pri = EIO_PRI_DEFAULT, callable $callback = NULL, mixed $data = NULL): resource

Beschreibung

eio_nop() ist eine No-Operation-Funktion der eio-Erweiterung. Sie stellt eine Anfrage in die asynchrone Warteschlange, die keinerlei I/O-Arbeit verrichtet, aber den vollständigen Request-Zyklus – Einreihung in die Warteschlange, Verarbeitung durch den Worker-Thread und Ausführung des Callbacks – durchläuft.

Der primäre Einsatzzweck ist das Testen und Debuggen der eio-Infrastruktur sowie das Messen von Overhead und Latenz der asynchronen Verarbeitungspipeline. Mit eio_nop() lässt sich überprüfen, ob die Event-Schleife und das Callback-System korrekt funktionieren, ohne dabei echte Ressourcen wie Dateisystem oder Netzwerk zu beanspruchen.

Zusätzlich kann die Funktion als Synchronisierungspunkt oder als Platzhalter dienen, wenn ein Callback zu einem bestimmten Zeitpunkt im asynchronen Ablauf ausgeführt werden soll, ohne eine konkrete Operation anzustoßen.

Parameter

Name Typ Default Beschreibung
$pri int EIO_PRI_DEFAULT Priorität der Anfrage. Mögliche Werte: EIO_PRI_MIN, EIO_PRI_DEFAULT oder EIO_PRI_MAX.
$callback callable NULL Eine Callback-Funktion, die nach Abschluss der (leeren) Operation aufgerufen wird. Sie erhält die Parameter ($data, $result), wobei $result immer 0 ist.
$data mixed NULL Beliebige benutzerdefinierte Daten, die unverändert an den $callback weitergereicht werden.

Rückgabewert

Typ
resource
Beschreibung
Gibt bei Erfolg eine eio-Request-Ressource zurück, mit der die Anfrage z. B. über eio_cancel() abgebrochen werden kann. Bei einem Fehler wird false zurückgegeben.

Beispiele

Einfacher NOP-Aufruf zur Überprüfung der Event-Schleife

<?php
eio_init();

$callback = function ($data, $result) {
    echo "NOP abgeschlossen. Ergebnis: " . $result . PHP_EOL;
    echo "Übergebene Daten: " . $data . PHP_EOL;
};

$req = eio_nop(EIO_PRI_DEFAULT, $callback, 'test-daten');

if ($req === false) {
    echo "Fehler beim Erstellen der NOP-Anfrage." . PHP_EOL;
} else {
    echo "NOP-Anfrage eingereiht." . PHP_EOL;
}

eio_event_loop();
?>
NOP-Anfrage eingereiht. NOP abgeschlossen. Ergebnis: 0 Übergebene Daten: test-daten

Latenz-Messung der asynchronen Pipeline

<?php
eio_init();

$start = microtime(true);

eio_nop(EIO_PRI_DEFAULT, function ($data, $result) use ($start) {
    $elapsed = microtime(true) - $start;
    printf("Pipeline-Overhead: %.4f ms\n", $elapsed * 1000);
});

eio_event_loop();
?>
Pipeline-Overhead: 0.1234 ms

// Wichtig · Fallstricke

Voraussetzung: Die eio-Erweiterung ist standardmäßig nicht in PHP enthalten und muss separat über PECL installiert werden. Sie steht nur auf Unix-ähnlichen Systemen (Linux, macOS) zur Verfügung; Windows wird nicht unterstützt.

Da eio_nop() keinerlei I/O durchführt, ist der Rückgabewert $result im Callback immer 0. Die Funktion eignet sich nicht für Produktionscode, sondern ausschließlich für Test- und Diagnosezwecke.