Signatur
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
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();
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;
// 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.