La question mène à :
Placez un WorkermanLibTimer dans start_gateway.php et exécutez-le toutes les deux secondes. Chaque exécution enregistre d'abord un morceau de texte dans un fichier texte.
Il n'y a aucun problème lors de l'exécution en tant que php start.php start, mais lors de l'exécution en tant que php start.php start -d, il semble que le minuteur ne fonctionne pas.
Le code start_gateway.php est le suivant
Problème résolu :
La logique métier doit être exécutée dans le rappel onXXX (souligné dans le manuel). En d'autres termes, le minuteur ne peut pas s'exécuter avant que Worker::runAll();
ne soit exécuté.
Étant donné que le code exécuté avant l'exécution de Worker::runAll(); appartient au processus principal, le processus principal ne peut pas avoir de code métier et le code métier du processus principal sera hérité par le processus enfant, résultant en des résultats incompatibles avec les résultats attendus.
Dans l'exemple ci-dessus, le minuteur peut être exécuté dans onWorkerStart. Il est recommandé de le placer dans le rappel $businessworker->onWorkerStart dans start_businessworker.php.
Articles et tutoriels connexes recommandés : tutoriel ouvrier
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!