Start · Sprachen · PHP · Referenz · swoole_async_set

swoole_async_set

Funktion

Setzt globale Konfigurationsoptionen für den asynchronen I/O-Betrieb der Swoole-Erweiterung.

Kategorie: misc

Signatur

swoole_async_set(array $settings): void

Beschreibung

swoole_async_set() ermöglicht es, verschiedene globale Parameter des asynchronen I/O-Systems der Swoole-Erweiterung zu konfigurieren. Die Einstellungen wirken sich auf die Thread-Anzahl des asynchronen Thread-Pools, das Logging-Verhalten sowie weitere interne Verhaltensweisen aus.

Die Funktion muss vor dem Start eines Swoole-Servers oder vor der ersten asynchronen Operation aufgerufen werden, da nachträgliche Änderungen möglicherweise nicht übernommen werden. Typische Einsatzgebiete sind das Anpassen der Anzahl der asynchronen I/O-Threads oder das Festlegen eines Log-Dateipfads.

Zu den unterstützten Optionen gehören unter anderem: thread_num (Anzahl der asynchronen Worker-Threads), enable_signalfd (signalfd-Unterstützung aktivieren/deaktivieren), socket_buffer_size (Puffergröße für Sockets) sowie log_file (Pfad zur Swoole-Logdatei).

Hinweis: Diese Funktion gehört zur älteren, prozeduralen API von Swoole. In neueren Versionen (ab Swoole 4.x) wird empfohlen, Konfigurationen direkt über die jeweiligen Server-Objekte wie Swoole\Server vorzunehmen. swoole_async_set gilt als veraltet und sollte in modernen Projekten nicht mehr verwendet werden.

Parameter

Name Typ Default Beschreibung
$settings Pflicht array Assoziatives Array mit den zu setzenden Optionen. Mögliche Schlüssel sind z. B. thread_num (int), enable_signalfd (bool), log_file (string) und socket_buffer_size (int).

Rückgabewert

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

Beispiele

Asynchrone Thread-Anzahl und Log-Datei konfigurieren

<?php
// Swoole asynchrone Einstellungen setzen
swoole_async_set([
    'thread_num'   => 8,       // 8 asynchrone I/O-Threads
    'log_file'     => '/var/log/swoole.log', // Log-Ausgabe in Datei
    'enable_signalfd' => false, // signalfd deaktivieren
]);

echo "Swoole async Einstellungen gesetzt." . PHP_EOL;

// Anschließend z.B. einen asynchronen HTTP-Server starten
$server = new swoole_http_server('0.0.0.0', 9501);
$server->on('request', function ($request, $response) {
    $response->end('<h1>Hallo von Swoole!</h1>');
});
$server->start();
Swoole async Einstellungen gesetzt.

Socket-Puffergröße erhöhen

<?php
// Puffergröße auf 8 MB erhöhen, z.B. für große Datenübertragungen
swoole_async_set([
    'socket_buffer_size' => 1024 * 1024 * 8, // 8 MB
    'thread_num'         => 4,
]);

echo "Socket-Puffergröße auf 8 MB gesetzt." . PHP_EOL;
Socket-Puffergröße auf 8 MB gesetzt.

// Wichtig · Fallstricke

Deprecation: swoole_async_set() ist Teil der alten prozeduralen Swoole-API und gilt ab Swoole 4.x als veraltet. Es wird empfohlen, die objektorientierte API (Swoole\Server, Swoole\Coroutine etc.) zu verwenden und Optionen direkt beim Erstellen des Server-Objekts zu übergeben.

Die Funktion steht nur zur Verfügung, wenn die Swoole PECL-Erweiterung installiert ist. Sie ist kein Bestandteil des PHP-Kerns. Falsch konfigurierte Werte, z. B. eine zu niedrige thread_num, können die Performance unter Last stark beeinträchtigen.