Start · Sprachen · PHP · Referenz · eio_set_max_idle

eio_set_max_idle

Funktion

Setzt die maximale Anzahl inaktiver (idle) Threads im eio-Thread-Pool.

Kategorie: io

Signatur

eio_set_max_idle(int $nthreads): void

Beschreibung

eio_set_max_idle() legt fest, wie viele Threads im eio-Thread-Pool im Leerlauf verbleiben dürfen, bevor überschüssige Threads beendet werden. Dies ermöglicht eine gezielte Steuerung des Ressourcenverbrauchs bei schwankender Last.

Wenn nach dem Abarbeiten von Aufgaben mehr Threads inaktiv sind als der hier festgelegte Grenzwert, werden die überzähligen Threads automatisch terminiert. Dadurch lässt sich Arbeitsspeicher und Systemlast in Phasen geringer Aktivität reduzieren.

Diese Funktion ist Teil der eio-Extension, die asynchrone I/O-Operationen auf Basis der libeio-Bibliothek bereitstellt. Sie eignet sich besonders für langlaufende Server-Prozesse oder Event-Loop-basierte Anwendungen, in denen die Thread-Pool-Größe dynamisch optimiert werden soll.

Im Zusammenspiel mit eio_set_min_parallel() und eio_set_max_parallel() lässt sich das Verhalten des Thread-Pools präzise tunen.

Parameter

Name Typ Default Beschreibung
$nthreads Pflicht int Die maximale Anzahl von Threads, die im Leerlauf (idle) verbleiben dürfen. Überschüssige inaktive Threads werden beendet.

Rückgabewert

Typ
void
Beschreibung
Diese Funktion gibt keinen Wert zurück.

Beispiele

Maximale Anzahl inaktiver Threads begrenzen

<?php
// Maximal 2 Threads dürfen im Leerlauf verbleiben
eio_set_max_idle(2);

// Mehrere asynchrone Dateioperationen starten
for ($i = 0; $i < 10; $i++) {
    eio_nop(EIO_PRI_DEFAULT, function() use ($i) {
        echo "Operation $i abgeschlossen\n";
    });
}

// Event-Loop starten
eio_event_loop();
?>
Operation 0 abgeschlossen Operation 1 abgeschlossen Operation 2 abgeschlossen Operation 3 abgeschlossen Operation 4 abgeschlossen Operation 5 abgeschlossen Operation 6 abgeschlossen Operation 7 abgeschlossen Operation 8 abgeschlossen Operation 9 abgeschlossen

Thread-Pool für einen Server-Prozess konfigurieren

<?php
// Thread-Pool-Konfiguration für moderaten Ressourcenverbrauch
eio_set_min_parallel(2);   // Mindestens 2 Threads parallel
eio_set_max_parallel(8);   // Maximal 8 Threads parallel
eio_set_max_idle(3);       // Maximal 3 Threads im Leerlauf behalten

echo "eio Thread-Pool konfiguriert: max. 3 Idle-Threads\n";

// Simuliertes asynchrones Lesen einer Datei
eio_open('/tmp/testfile.txt', EIO_O_RDONLY, 0, EIO_PRI_DEFAULT, function($data, $result) {
    if ($result !== -1) {
        echo "Datei erfolgreich geöffnet\n";
        eio_close($result);
    }
});

eio_event_loop();
?>
eio Thread-Pool konfiguriert: max. 3 Idle-Threads Datei erfolgreich geöffnet

// Wichtig · Fallstricke

Hinweis: Die eio-Extension ist nicht standardmäßig in PHP enthalten und muss explizit über PECL installiert werden (pecl install eio). Die Verfügbarkeit kann je nach Betriebssystem und PHP-Konfiguration variieren.

Ein zu niedriger Wert für nthreads kann dazu führen, dass Threads häufig neu erstellt werden müssen, was mit einem gewissen Overhead verbunden ist. Ein zu hoher Wert hingegen hält unnötig viele Threads und damit Systemressourcen dauerhaft belegt. Für die meisten Anwendungen ist ein Wert zwischen 2 und 5 sinnvoll.

Die Funktion sollte idealerweise vor dem Start intensiver I/O-Operationen aufgerufen werden, damit die Konfiguration direkt wirksam ist.