Maison  >  Article  >  cadre php  >  Swoole peut-il régler plusieurs minuteries ?

Swoole peut-il régler plusieurs minuteries ?

(*-*)浩
(*-*)浩original
2019-12-16 13:52:172301parcourir

Swoole peut-il régler plusieurs minuteries ?

Tout d'abord, dans divers systèmes d'entreprise, le serveur est souvent tenu d'analyser les données pertinentes en arrière-plan et de déclencher les statistiques, notifications et autres opérations correspondantes.

Par exemple, pour un système de gestion de projet, il est nécessaire de compter chaque jour l'exécution, l'état d'expiration de chaque tâche, l'avancement de l'ensemble du projet, etc. dans un délai précis, et de faire notifications correspondantes basées sur les statistiques ; (Apprentissage recommandé : tutoriel vidéo swoole )

Comment programmer un tel scénario ?

En utilisant des méthodes de programmation ordinaires, le déclenchement automatique et les statistiques ne peuvent pas être obtenus. Bien sûr, cette idée simple est bénéfique pour le mécanisme de tâches cron du système. Cependant, cette méthode nécessite davantage de facteurs d’exploitation humaine en termes de configuration et de fiabilité.

Swoole est une extension PHP développée en C. Elle peut implémenter un serveur Web hautes performances via PHP. En même temps, elle dispose également de fonctionnalités de minuterie et de file d'attente de tâches intégrées. De cette manière, sur la base de swoole, vous pouvez contrôler la mise en œuvre au niveau du programme et réduire la dépendance aux outils externes - serveurs de file d'attente de messages indépendants, outils de gestion des tâches planifiées, etc.

La puissance de swoole réside dans la conception de son modèle de processus, qui résout à la fois les problèmes asynchrones et le parallélisme.

s'utilise comme suit :

swoole_server_addtimer($serv, 10);

Le deuxième paramètre est l'intervalle de minuterie, en secondes. La granularité minimale du minuteur swoole est de 1 seconde. Prend en charge plusieurs minuteries. Notez qu'il ne peut pas y avoir deux minuteries avec le même intervalle. Après avoir ajouté la minuterie, vous devez écrire une fonction de rappel.

Le code spécifique est le suivant :

swoole_server_handler($serv, 'onTimer', my_OnTimer);
function my_OnTimer($serv, $interval)
{
  echo "Timer[$interval] is call\n";
}

Le module de tâches est utilisé pour effectuer certaines tâches lentes asynchrones, telles que la diffusion dans webim. Semblable à node.js, s'il y a 100 000 connexions et qu'une diffusion doit être envoyée, elle bouclera 100 000 fois. À ce stade, le programme ne peut rien faire, ne peut pas accepter de nouvelles connexions et ne peut pas recevoir ou envoyer de paquets.

Mais swoole est différent. Après avoir été lancés dans le processus de tâche, votre réacteur et votre ouvrier fonctionneront toujours. Une fois la tâche terminée, le processus de travail sera informé de manière asynchrone pour lui indiquer que la tâche est terminée.

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