Start · Sprachen · PHP · Referenz · eio_nthreads

eio_nthreads

Funktion

Gibt die Anzahl der aktuell genutzten Worker-Threads der <code>eio</code>-Erweiterung zurück.

Kategorie: io

Signatur

eio_nthreads(): int

Beschreibung

eio_nthreads() liefert die Anzahl der Worker-Threads, die das eio-Framework zum aktuellen Zeitpunkt aktiv verwendet. Die eio-Erweiterung führt asynchrone Ein-/Ausgabe-Operationen in einem internen Thread-Pool aus, um blockierende I/O-Operationen vom Haupt-Programmablauf zu entkoppeln.

Diese Funktion ist besonders nützlich für Diagnose- und Monitoring-Zwecke. Mit ihr lässt sich zur Laufzeit beobachten, wie viele Threads gerade aktiv beschäftigt sind – etwa um Engpässe zu erkennen oder den Thread-Pool entsprechend zu konfigurieren. In Verbindung mit eio_nreqs() und eio_nready() ermöglicht sie ein vollständiges Bild über den aktuellen Zustand der asynchronen Verarbeitungswarteschlange.

Der Rückgabewert kann sich von Aufruf zu Aufruf unterscheiden, da Threads dynamisch erstellt und beendet werden, je nachdem wie viele I/O-Anfragen gerade ausstehen. Eine hohe Thread-Anzahl kann auf eine starke Last durch viele gleichzeitige I/O-Operationen hindeuten.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der aktuell vom eio-Framework genutzten Worker-Threads als positive ganze Zahl zurück.

Beispiele

Aktuelle Thread-Anzahl ausgeben

<?php
// eio-Event-Loop starten und Thread-Anzahl abfragen
eio_init();

// Einige asynchrone Operationen einreihen
eio_nop(EIO_PRI_DEFAULT, function() {
    echo "Nop abgeschlossen.\n";
});

eio_nop(EIO_PRI_DEFAULT, function() {
    echo "Zweites Nop abgeschlossen.\n";
});

// Thread-Anzahl vor dem Starten der Event-Loop abfragen
$threads = eio_nthreads();
echo "Aktuell genutzte Threads: " . $threads . "\n";

// Event-Loop ausführen bis alle Anfragen abgearbeitet sind
eio_event_loop();

$threads = eio_nthreads();
echo "Threads nach Event-Loop: " . $threads . "\n";
Aktuell genutzte Threads: 1 Nop abgeschlossen. Zweites Nop abgeschlossen. Threads nach Event-Loop: 1

Thread-Pool-Status überwachen

<?php
// Status-Überblick über die eio-Verarbeitungswarteschlange
eio_init();

// Mehrere asynchrone Lese-Operationen einreihen
for ($i = 0; $i < 5; $i++) {
    eio_stat('/tmp', EIO_PRI_DEFAULT, function($data, $result) {
        // Ergebnis verarbeiten
    });
}

// Diagnoseinformationen ausgeben
echo "Genutzte Threads:      " . eio_nthreads() . "\n";
echo "Ausstehende Anfragen:  " . eio_nreqs()    . "\n";
echo "Bereite Anfragen:      " . eio_nready()   . "\n";
echo "Ausstehende Callbacks: " . eio_npending() . "\n";

eio_event_loop();
Genutzte Threads: 1 Ausstehende Anfragen: 5 Bereite Anfragen: 5 Ausstehende Callbacks: 0

// Wichtig · Fallstricke

Die Funktion steht nur zur Verfügung, wenn die eio-PECL-Erweiterung installiert und geladen ist. Sie ist nicht Teil der PHP-Standardbibliothek. In produktiven Anwendungen sollte die Thread-Anzahl regelmäßig überwacht werden, da ein unkontrolliertes Anwachsen des Thread-Pools zu erhöhtem Speicherverbrauch führen kann.

Die maximale Anzahl an Threads lässt sich mit eio_set_max_parallel() begrenzen. Für leistungskritische Anwendungen empfiehlt sich eine Abstimmung des Thread-Pools auf die verfügbaren CPU-Kerne und I/O-Ressourcen des Systems.