Une exploration préliminaire de la coroutine swoole
apprend la coroutine de swoole La caractéristique de la coroutine est qu'elle semble être exécutée simultanément. Expérimentez-le.
Gratuit recommandé : swoole
La prémisse de cet article est que swoole a été installé sous Linux. La dernière version est la 4.5.9 (2020-12-17)
Construisez une exigence, créez 5 coroutines à la fois, chaque coroutine dort un nombre aléatoire entre 1 et 3 secondes, puis imprime Pour le temps de veille, nous espérons qu'une fois tous les programmes terminés, l'ensemble du processus prendra jusqu'à 3 secondes.
1.php
foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); sleep($sleep_time); echo "睡眠了" . $sleep_time . "秒\n"; });}
En utilisant php 1.php pour s'exécuter, le programme peut être exécuté, mais il ne ressemble pas à une coroutine, mais est exécuté de manière synchrone. L'exécution entière prend bien plus de 3 secondes. Il s'avère qu'il y a un petit bug ici. Vous devez utiliser co:sleep, afin de pouvoir dormir dans cette coroutine sans affecter l'ensemble du programme.
2.php
foreach (range(1, 5) as $v) { go(function () { $sleep_time = random_int(1, 3); co::sleep($sleep_time); echo "睡眠了" . $sleep_time . "秒\n"; });}
Les résultats sont les suivants :
睡眠了1秒 睡眠了2秒 睡眠了2秒 睡眠了3秒 睡眠了3秒
En bref, la coroutine avec moins de sommeil doit sortir en premier, et la coroutine qui a dormi pendant de même le temps s'imprime en même temps. Et le temps total pris à la fin du programme est de 3 secondes, indiquant que la concurrence est réussie.
Maintenant, j'espère qu'une fois les 5 coroutines terminées, hello world pourra être imprimé !
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";
Le résultat est un autre problème, hello world est toujours imprimé en premier.
Donc, vous devez utiliser le conteneur coroutine ici.
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";
Les résultats sont les suivants :
睡眠了1秒 睡眠了2秒 睡眠了3秒 睡眠了3秒 睡眠了3秒 hello world!
Le résultat correct peut être imprimé cette fois, parfait !
La coroutine de Swoole est assez intéressante~
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article discute de l'extension de Swoole avec des modules personnalisés, des étapes de détail, des meilleures pratiques et du dépannage. L'objectif principal est d'améliorer les fonctionnalités et l'intégration.

L'article discute de l'utilisation du pool de mémoire de Swoole pour réduire la fragmentation de la mémoire par une gestion et une configuration efficaces de la mémoire. L'accent principal est d'activer, de dimensionner et de réutiliser la mémoire dans le pool.

L'article discute de la configuration de l'isolement du processus de Swoole, de ses avantages tels que l'amélioration de la stabilité et de la sécurité, et les méthodes de dépannage. Compte de chargement: 159

L'article discute de l'utilisation des fonctionnalités d'E / S asynchrones de Swoole en PHP pour les applications hautes performances. Il couvre l'installation, la configuration du serveur et les stratégies d'optimisation. Nombre de mots: 159

L'article décrit les moyens de contribuer au projet Swoole, notamment la déclaration des bogues, la soumission des fonctionnalités, le codage et l'amélioration de la documentation. Il traite des compétences et des étapes requises pour que les débutants commencent à contribuer, et comment trouver des pressions est

Le modèle de réacteur de Swoole utilise une architecture d'E / S non bloquante axée sur les événements pour gérer efficacement les scénarios à haute monnaie, optimisant les performances via diverses techniques. (159 caractères)

L'article discute de l'utilisation de Swoole pour les microservices, en se concentrant sur la conception, la mise en œuvre et l'amélioration des performances via des E / S asynchrones et des coroutines. Nombre de mots: 159

L'article traite des outils et des meilleures pratiques pour surveiller et optimiser les performances de Swoole et le dépannage des méthodes de problèmes de performance.
