Heim PHP-Framework Swoole Eine vorläufige Untersuchung der Swoole-Coroutine

Eine vorläufige Untersuchung der Swoole-Coroutine

Dec 18, 2020 pm 05:39 PM
swoole协程

In der Coroutine, die swoole lernt, besteht das Merkmal der Coroutine darin, dass sie scheinbar gleichzeitig ausgeführt wird. Experimentieren Sie damit.

Eine vorläufige Untersuchung der Swoole-Coroutine

Kostenlos empfohlen: swoole

Die Voraussetzung für diesen Artikel ist, dass swoole unter Linux installiert wurde. Die neueste Version ist 4.5.9 (17.12.2020)

Erstellen Sie eine Anforderung, erstellen Sie 5 Coroutinen gleichzeitig, jede Coroutine schläft eine zufällige Zahl zwischen 1 und 3 Sekunden und druckt dann die Ruhezeit aus abgeschlossen sind, dauert der gesamte Vorgang bis zu 3 Sekunden.

1.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        sleep($sleep_time);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}
Nach dem Login kopieren

Mit PHP 1.php zum Ausführen kann das Programm ausgeführt werden, es fühlt sich jedoch nicht wie eine Coroutine an, sondern wird synchron ausgeführt. Die gesamte Ausführung dauert weit mehr als 3 Sekunden. Es stellt sich heraus, dass hier ein kleiner Fehler vorliegt. Sie sollten co:sleep verwenden, damit Sie in dieser Coroutine schlafen können, ohne das gesamte Programm zu beeinträchtigen.

2.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        co::sleep($sleep_time);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}
Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

睡眠了1秒
睡眠了2秒
睡眠了2秒
睡眠了3秒
睡眠了3秒
Nach dem Login kopieren

Kurz gesagt, die Coroutine, die weniger schläft, muss zuerst beendet werden, und die Coroutine, die gleichzeitig schläft, druckt gleichzeitig Zeichen aus. Und die Gesamtzeit am Ende des Programms beträgt 3 Sekunden, was darauf hinweist, dass die Parallelität erfolgreich ist.

Jetzt hoffe ich, dass Hallo Welt gedruckt werden kann, nachdem die 5 Coroutinen fertig sind!

3.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        co::sleep($sleep_time);
        $a = random_int(1, 1000);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}echo "hello world!\n";
Nach dem Login kopieren

Das Ergebnis ist ein weiteres Problem: Hallo Welt wird immer zuerst gedruckt.
Sie müssen hier also den Coroutine-Container verwenden.

4.php

Co\run(function () {
    foreach (range(1, 5) as $v) {
        go(function ()  {
            $sleep_time = random_int(1, 3);
            co::sleep($sleep_time);
            echo "睡眠了" . $sleep_time . "秒\n";
        });
    }});echo "hello world!\n";
Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

睡眠了1秒
睡眠了2秒
睡眠了3秒
睡眠了3秒
睡眠了3秒
hello world!
Nach dem Login kopieren

Das richtige Ergebnis kann dieses Mal gedruckt werden, perfekt!
swooles Coroutine ist ein bisschen interessant~

Das obige ist der detaillierte Inhalt vonEine vorläufige Untersuchung der Swoole-Coroutine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie erweitere ich Schläger mit benutzerdefinierten Modulen? Wie erweitere ich Schläger mit benutzerdefinierten Modulen? Mar 18, 2025 pm 03:57 PM

In Artikel wird die Erweiterung von Smoke mit benutzerdefinierten Modulen, Detailschritten, Best Practices und Fehlerbehebung erläutert. Das Hauptaugenmerk liegt auf der Verbesserung der Funktionalität und Integration.

Wie kann ich den Speicherpool von SWOOLE verwenden, um die Speicherfragmentierung zu verringern? Wie kann ich den Speicherpool von SWOOLE verwenden, um die Speicherfragmentierung zu verringern? Mar 17, 2025 pm 01:23 PM

In dem Artikel wird mithilfe des Speicherpools von SWOOLE erörtert, um die Speicherfragmentierung durch effiziente Speicherverwaltung und -konfiguration zu verringern. Der Schwerpunkt liegt auf der Ermöglichung, Größe und Wiederverwendung des Speichers im Pool.

Wie konfiguriere ich die Prozessisolation von SWOOLE? Wie konfiguriere ich die Prozessisolation von SWOOLE? Mar 18, 2025 pm 03:55 PM

In Artikel werden die Konfiguration der Prozessisolation von SWOOLE, seine Vorteile wie verbesserte Stabilität und Sicherheit sowie Fehlerbehebungsmethoden erörtert.

Wie benutze ich die asynchronen E/A -Funktionen von SWOOLE? Wie benutze ich die asynchronen E/A -Funktionen von SWOOLE? Mar 18, 2025 pm 03:56 PM

In dem Artikel werden die asynchronen E/A-Funktionen von SWOOLE in PHP für Hochleistungsanwendungen erläutert. Es deckt die Strategien für Installation, Server und Optimierungsstrategien ab. Word -Anzahl: 159

Wie kann ich zum SWOOLE Open-Source-Projekt beitragen? Wie kann ich zum SWOOLE Open-Source-Projekt beitragen? Mar 18, 2025 pm 03:58 PM

Der Artikel beschreibt Möglichkeiten, um zum SWOOLE -Projekt beizutragen, einschließlich Meldungen von Fehler, Übermittlungsfunktionen, Codierung und Verbesserung der Dokumentation. Es werden erforderliche Fähigkeiten und Schritte für Anfänger erörtert, um mitzunehmen, und wie man dringend findet, ist

Wie funktioniert das Reaktormodell von SWOOLE unter der Motorhaube? Wie funktioniert das Reaktormodell von SWOOLE unter der Motorhaube? Mar 18, 2025 pm 03:54 PM

Das Reaktormodell von SWOOLE verwendet eine ereignisgesteuerte, nicht blockierende E/A-Architektur, um mit hohen Konzern effizient zu verwalten und die Leistung durch verschiedene Techniken zu optimieren. (159 Zeichen)

Wie kann ich Smoole verwenden, um eine Microservices -Architektur zu erstellen? Wie kann ich Smoole verwenden, um eine Microservices -Architektur zu erstellen? Mar 17, 2025 pm 01:18 PM

In Artikel wird die Verwendung von SWOOLE für Microservices erläutert und sich auf Design, Implementierung und Leistungsverbesserung durch asynchrone E/A und Coroutines konzentrieren.

Mit welchen Tools kann ich die Leistung von SWOOLE überwachen? Mit welchen Tools kann ich die Leistung von SWOOLE überwachen? Mar 18, 2025 pm 03:52 PM

In dem Artikel werden Tools und Best Practices zur Überwachung und Optimierung der Leistung von SWOOLE sowie die Fehlerbehebungsmethoden für Leistungsprobleme erläutert.

See all articles