Maison  >  Article  >  cadre php  >  Comment redémarrer Swoole

Comment redémarrer Swoole

(*-*)浩
(*-*)浩original
2019-12-07 14:24:135531parcourir

Comment redémarrer Swoole

Dans swoole, nous pouvons envoyer différents signaux au processus principal, et le processus principal le gérera différemment selon le type de signal reçu.

Par exemple, les suivants (apprentissage recommandé : tutoriel vidéo swoole)

1、kill -SIGTERM|-15 master_pid  终止Swoole程序,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程
2、kill -USR1|-10  master_pid  重启所有的Worker进程
3、kill -USR2|-12  master_pid  重启所有的Task Worker进程

Lorsque le signal USR1 est envoyé au processus Maître, le processus Maître enverra la même chose. Le signal est transmis au processus Worker via le processus Manager. Le processus Worker qui reçoit ce signal libérera la mémoire du processus après avoir traité la logique en cours d'exécution, s'arrêtera, puis le processus Manager redémarrera un nouveau Worker. processus.

Le nouveau processus Worker occupera un nouvel espace mémoire.

Scénario :

S'il s'agit d'un projet en ligne, un serveur backend occupé traite les demandes à tout moment si l'administrateur termine/redémarre le processus en le tuant. Le programme serveur peut entraîner l'arrêt du code au milieu de l'exécution.

Dans ce cas, une incohérence des données se produira.

Par exemple, dans un système commercial, la section suivante de la logique de paiement est l'expédition. On suppose que le processus se termine après la logique de paiement. Cela amènera l’utilisateur à payer la devise mais ne livrera pas la marchandise, et les conséquences seront très graves.

swoole nous fournit un mécanisme de redémarrage en douceur. Il nous suffit d'envoyer un signal spécifique au processus principal de swoole_server pour terminer le redémarrage du serveur.

Remarques :

1. La mise à jour concerne uniquement le processus de travail. Inclure dans le processus de travail signifie la mise à jour du code écrit dans le processus maître et le processus gestionnaire. . Cela ne prend pas effet, ce qui signifie que le redémarrage n'a de sens que pour les fichiers chargés après le rappel onWorkerStart.

Un fichier qui a été chargé en mémoire avant le démarrage du processus Worker. Si vous souhaitez qu'il prenne à nouveau effet, vous pouvez uniquement fermer le serveur et le redémarrer.

2. La logique écrite directement dans le code du travailleur ne prendra pas effet, même si un signal est envoyé. Le code de logique métier pertinent doit être introduit via include pour prendre effet.

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