onWorkerReload

Exigences (workerman >= 3.2.5)

Description:

callback Worker::$onWorkerReload

Cette fonctionnalité est rarement utilisée.

Configurez le rappel exécuté lorsque le Worker reçoit un signal de reload.

Le rappel onWorkerReload peut être utilisé pour faire de nombreuses choses, par exemple recharger les fichiers de configuration métier sans avoir à redémarrer le processus.

Attention :

L'action par défaut des sous-processus lorsqu'ils reçoivent un signal de reload est de sortir et de redémarrer, afin que le nouveau processus puisse recharger le code métier et terminer la mise à jour du code. Il est donc normal que les sous-processus sortent immédiatement après avoir exécuté le rappel onWorkerReload.

Si, après avoir reçu un signal de reload, vous souhaitez uniquement que les sous-processus exécutent onWorkerReload sans les faire sortir, vous pouvez définir la propriété reloadable du Worker lors de l'initialisation de l'instance Worker sur false.

Paramètres de la fonction de rappel

$worker

C'est l'objet Worker

Exemple

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:8484');
// Définir reloadable sur false, c'est-à-dire que les sous-processus ne redémarrent pas lorsqu'ils reçoivent un signal de reload
$worker->reloadable = false;
// Informez tous les clients que le serveur a exécuté un reload après exécution du reload
$worker->onWorkerReload = function(Worker $worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send('worker reloading');
    }
};
// Exécutez le worker
Worker::runAll();

Astuce : en plus d'utiliser une fonction anonyme comme rappel, vous pouvez également vous référer ici pour utiliser d'autres écritures de rappel.