Maison >cadre php >Swoole >Comment utiliser l'événement swoole

Comment utiliser l'événement swoole

(*-*)浩
(*-*)浩original
2019-12-06 10:31:402175parcourir

Comment utiliser l'événement swoole

SwooleServer est un modèle piloté par les événements, et tout le code de logique métier doit être écrit dans la fonction de rappel d'événement. Lorsqu'un événement réseau spécifique se produit, la couche inférieure rappelle activement la fonction PHP spécifiée. Au total, 13 types d'événements sont pris en charge. (Apprentissage recommandé : tutoriel vidéo swoole )

Séquence d'exécution des événements

Tous les rappels d'événements se produisent après $server->start

Le dernier événement à la fin du programme d'arrêt du serveur est onShutdown

Une fois le serveur démarré avec succès, onStart/onManagerStart/onWorkerStart sera exécuté simultanément dans différents processus

onReceive/onConnect/onClose Triggered dans le processus Worker

OnWorkerStart/onWorkerStop sera appelé une fois lorsque le processus Worker/Task démarre/se termine

L'événement onTask ne se produit que dans le processus de tâche

L'événement onFinish se produit uniquement dans le travailleur L'ordre d'exécution des 3 événements

onStart/onManagerStart/onWorkerStart se produit dans le processus est incertain

Mode coroutine

La version Swoole2/4 prend en charge les coroutines. Après avoir utilisé les coroutines, les fonctions de rappel d'événement seront exécutées simultanément. Coroutine est une implémentation de thread en mode utilisateur qui n'a aucune consommation de planification supplémentaire et occupe uniquement de la mémoire.

L'utilisation du mode coroutine peut être comprise comme "chaque fonction de rappel d'événement créera un nouveau thread pour l'exécution. Une fois la fonction de rappel d'événement exécutée, le thread se fermera."

Si vous souhaitez fermer la coroutine, vous pouvez définir :

$server->set(["enable_coroutine" => false, ]);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn