Heim  >  Artikel  >  PHP-Framework  >  Wie Swoole Coroutinen implementiert

Wie Swoole Coroutinen implementiert

(*-*)浩
(*-*)浩Original
2019-12-07 14:11:002860Durchsuche

Swoole verfügt seit 2.0 über integrierte Coroutine-Funktionen und stellt IO-Schnittstellen mit Coroutine-Funktionen bereit (vereint im Namespace SwooleCoroutine*).

Wenn Sie die Coroutine aktivieren, fügen Sie beim Kompilieren bitte die Kompilierungsoption --enable-coroutine hinzu.

Wie Swoole Coroutinen implementiert

Coroutinen können als reine Benutzermodus-Threads verstanden werden, die durch Kooperation und nicht durch Präemption wechseln. Im Vergleich zu Prozessen oder Threads können alle Vorgänge von Coroutinen im Benutzermodus ausgeführt werden, und die Erstellungs- und Wechselkosten sind geringer. (Empfohlenes Lernen: Swoole-Video-Tutorial )

Swoole kann für jede Anfrage eine entsprechende Coroutine erstellen und die Coroutine angemessen entsprechend dem IO-Status planen, was die folgenden Vorteile bringt:

Entwickler können synchrones Codeschreiben verwenden, um die Wirkung und Leistung asynchroner E/A ohne jegliches Bewusstsein zu erzielen, wodurch die durch herkömmliche asynchrone Rückrufe verursachte diskrete Codelogik vermieden wird und in mehrschichtigen Rückrufen gefangen wird, wodurch der Code nicht wartbar wird.

Da Swoole die Coroutine im Vergleich zum herkömmlichen PHP-Layer-Coroutine-Framework auf der untersten Ebene kapselt, müssen Entwickler gleichzeitig nicht das Yield-Schlüsselwort verwenden, um eine Coroutine-E/A-Operation zu identifizieren, sodass dies nicht der Fall ist Die Semantik muss genau angegeben werden, und die Aufrufe auf jeder Ebene werden so geändert, dass die Ausbeute erheblich verbessert wird.

Coroutine API zielt derzeit auf die Client-Kapselung von Mainstream-Protokollen wie TCP und UDP ab, einschließlich:

UDP

TCP

HTTP

Mysql

Redis

kann die Anforderungen der meisten Entwickler erfüllen. Für private Protokolle können Entwickler zur bequemen Kapselung die TCP- oder UDP-Schnittstelle der Coroutine nutzen.

Prerequisite:
aktivieren

PHP-Versionsanforderungen: >= 5.5, einschließlich 5.5, 5.6, 7.0, 7.1

Entwickeln basierend auf swoole_server oder swoole_http_server, Derzeit werden Coroutinen nur in onRequet, onReceive, onConnect und anderen Event-Callback-Funktionen unterstützt.

swoole_server und swoole_http_server erstellen entsprechende Coroutinen für jede Anfrage. Entwickler können Coroutine-Clients in onRequet-, onReceive- und onConnect-Ereignisrückrufen verwenden.

Das obige ist der detaillierte Inhalt vonWie Swoole Coroutinen implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn