Maison >cadre php >Swoole >Le swoole timer est-il un processus unique ?

Le swoole timer est-il un processus unique ?

(*-*)浩
(*-*)浩original
2019-12-12 13:41:562088parcourir

Le swoole timer est-il un processus unique ?

Minuterie avec une précision de la milliseconde. La couche inférieure est implémentée sur la base de epoll_wait et setitimer. La structure de données utilise un tas minimum, qui peut prendre en charge l'ajout d'un grand nombre de timers.

Utiliser l'implémentation de setitimer et de signal dans le processus de synchronisation, comme les processus Manager et TaskWorker                                                                                                                                                                                                                Utiliser epoll_wait/kevent/poll/select timeout dans le processus asynchrone pour atteindre les

Performances

La couche inférieure utilise la structure de données de tas minimale pour implémenter la minuterie, L'ajout et la suppression de minuteries sont toutes des opérations de mémoire, donc les performances sont très élevées.

Dans le script de référence officiel https://github.com/swoole/swoole-src/blob/master/benchmark/timer.php, l'ajout ou la suppression d'un minuteur de 100 000 temps aléatoires prend : environ 0,08 s.

~/workspace/swoole/benchmark$ php timer.php
add 100000 timer :0.091133117675781s
del 100000 timer :0.084658145904541s

Timer est une opération de mémoire sans consommation d'E/S

Différence

Timer est différent du propre pcntl_alarm de PHP. pcntl_alarm est basé sur l'implémentation de la fonction signal d'horloge + tick et présente quelques défauts :

Il ne prend en charge que jusqu'à quelques secondes, tandis que la minuterie peut atteindre le niveau de la milliseconde

Ne prend pas en charge la configuration de plusieurs programmes de minuterie en même temps time

pcntl_alarm s'appuie sur declare(ticks = 1), et les performances sont très mauvaises

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
Article précédent:Ce que swoole2.0 peut faireArticle suivant:Ce que swoole2.0 peut faire