Heim  >  Artikel  >  PHP-Framework  >  So aktivieren Sie Swoole-Coroutine

So aktivieren Sie Swoole-Coroutine

(*-*)浩
(*-*)浩Original
2019-12-09 11:01:313387Durchsuche

So aktivieren Sie Swoole-Coroutine

Die offizielle Version von Swoole 2.0 wurde veröffentlicht. Das größte Update in Version 2.0 ist die zusätzliche Unterstützung für Coroutinen. Die offizielle Version unterstützt sowohl PHP5 als auch PHP7.

Basierend auf der Swoole2.0-Coroutine können PHP-Entwickler Code synchron schreiben, und die zugrunde liegende Schicht plant die Coroutine automatisch und wandelt sie in asynchrone E/A um.

Lösen Sie das Problem verschachtelter Rückrufe in der herkömmlichen asynchronen Programmierung. (Empfohlenes Lernen: Swoole-Video-Tutorial )

Im Vergleich zur Implementierung von yield/generator und async/await in Node.js (ES6+), Python und anderen Sprachen ist die Swoole-Coroutine nicht erforderlich Der Code fügt zusätzliche Schlüsselwörter hinzu.

Im Vergleich zu Goroutine ist die Swoole-Coroutine integriert. Zum Starten der Coroutine ist es nicht erforderlich, das Schlüsselwort „go“ hinzuzufügen ist einfacher zu verwenden. Darüber hinaus verfügt die E/A-Komponente der Swoole-Coroutine über einen integrierten Timeout-Mechanismus auf der untersten Ebene, sodass kein komplexer Select/Chan/Timer zur Implementierung des Client-Timeouts verwendet werden muss.

Zu den integrierten Coroutine-Client-Komponenten unten in Swoole gehören derzeit: udpclient, tcpclient, httpclient, redisclient und mysqlclient, die im Wesentlichen mehrere von Entwicklern häufig verwendete Kommunikationsprotokolle abdecken. Coroutine-Komponenten können nur in den Rückruffunktionen onConnect, onRequest, onReceive und onMessage des Servers verwendet werden.

Verwenden Sie swole Coroutine

So verwenden Sie Coroutine:

Verwenden Sie go()( SwoleCoroutine ::Abkürzung für create()) Erstellen Sie eine Coroutine

Fügen Sie in der Rückruffunktion von go() den Code hinzu, den die Coroutine ausführen muss. Beachten Sie, dass es sich um nicht blockierenden Code handelt

use Swoole\Coroutine as Co; // 常用的缩写方式

go(function () { // 创建协程, 回调函数中写需要在协程中执行的代码
    echo "daydaygo";
    Co::sleep(1); // 不能是阻塞代码
});

Coroutine

Wie oben erwähnt, verwenden Sie go(), um eine Coroutine zu erstellen

Swoole-Server, die unterste Ebene wird automatisch eingefügt onRequet, onReceive erstellen automatisch eine Coroutine vor onConnect und anderen Ereignisrückrufen

Der Einflussbereich nach dem Einschalten des Parameters enable_coroutine: umfasst hauptsächlich den Timer-Timer

Die Coroutine-Version des Task-Prozesses wird geöffnet Mit task_enable_coroutine wird in onTask automatisch eine Coroutine erstellt

Der Prozess und der Prozesspool unterstützen die Aktivierung der Coroutine. Der nach der Aktivierung erstellte untergeordnete Prozess erstellt automatisch die Coroutine

// tcp/udp server, 可以在此基础可封装 rpc
$s = new \Swoole\Server();
// http server, 替代传统的 fpm
$s = new \Swoole\Http\Server();
// 开启 http2 支持: https://wiki.swoole.com/wiki/page/326.html
$s = new \Swoole\Http\Server();
$s->set([
    'open_http2_protocol' => true,
]);
// 进而可以实现基于 http2 的服务, 比如 grpc
// websocket server
$s = new \Swoole\WebSocket\Server();

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie Swoole-Coroutine. 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