Remarques
Remarques sur l'utilisation des temporisateurs
-
Les temporisateurs ne peuvent être ajoutés que dans les rappels
onXXXX. Il est recommandé de configurer les temporisateurs globaux dans le rappelonWorkerStartet de configurer les temporisateurs pour une connexion spécifique dansonConnect. -
Les tâches temporisées ajoutées s'exécutent dans le processus actuel (aucun nouveau processus ou thread ne sera lancé). Les tâches lourdes peuvent affecter l'exécution d'autres tâches dans le processus actuel, il est donc préférable de faire exécuter les tâches chronophages dans un processus distinct, par exemple en établissant un ou plusieurs processus Worker.
-
Si le processus actuel n'a pas activé les coroutines swoole/swow, lorsque le processus est occupé par d'autres tâches ou qu'une tâche ne se termine pas dans le temps prévu, et que le prochain cycle d'exécution commence, il attendra que la tâche actuelle soit terminée avant de s'exécuter, ce qui peut provoquer un retard dans l'exécution des temporisateurs comme prévu. En d'autres termes, les tâches dans le processus actuel s'exécutent de manière séquentielle, tandis que dans le cas de plusieurs processus, les tâches s'exécutent de manière parallèle entre les processus.
-
Il est nécessaire de faire attention aux problèmes de concurrence que pourrait entraîner la programmation de tâches temporisées dans plusieurs processus. Par exemple, le code ci-dessous imprimera 5 fois par seconde.
$worker = new Worker(); // 5 processus $worker->count = 5; $worker->onWorkerStart = function(Worker $worker) { // 5 processus, chaque processus a un tel temporisateur Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll();Si vous ne souhaitez qu'un seul processus exécute le temporisateur, veuillez consulter Exemple 2 de Timer::add
-
Il peut y avoir une erreur d'environ 1 milliseconde.
-
Les temporisateurs ne peuvent pas être supprimés d'un processus à l'autre ; par exemple, un temporisateur défini dans le processus a ne peut pas être supprimé directement dans le processus b en appelant l'interface Timer::del.
-
Les identifiants des temporisateurs peuvent être dupliqués entre différents processus, mais les identifiants des temporisateurs générés dans le même processus ne seront pas dupliqués.
-
Les modifications de l'heure système affecteront le comportement des temporisateurs, il est donc recommandé de redémarrer après avoir modifié l'heure système.