onWorkerReload

Requisito (workerman >= 3.2.5)

Descrizione:

callback Worker::$onWorkerReload

Questa funzionalità non è frequentemente utilizzata.

Imposta il callback da eseguire quando il Worker riceve un segnale di reload.

È possibile utilizzare il callback onWorkerReload per fare molte cose, come ricaricare il file di configurazione aziendale senza dover riavviare il processo.

Nota

L'azione predefinita dei subprocessi quando ricevono un segnale di reload è quella di uscire e riavviarsi, in modo che il nuovo processo possa ricaricare il codice aziendale completando l'aggiornamento del codice. Quindi, dopo il reload, è normale che il subprocesso esca immediatamente dopo aver eseguito il callback onWorkerReload.

Se dopo aver ricevuto un segnale di reload si desidera che il subprocesso esegua solo onWorkerReload senza uscire, è possibile impostare l'attributo reloadable dell'istanza Worker corrispondente su false durante l'inizializzazione dell'istanza Worker.

Parametri della funzione di callback

$worker

è l'oggetto Worker

Esempio

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

$worker = new Worker('websocket://0.0.0.0:8484');
// Imposta reloadable su false, cioè il subprocesso non esegue il riavvio quando riceve il segnale di reload
$worker->reloadable = false;
// Dopo il reload, informa tutti i client che il server ha eseguito il reload
$worker->onWorkerReload = function(Worker $worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send('worker reloading');
    }
};
// Esegui il worker
Worker::runAll();

Suggerimento: oltre a utilizzare funzioni anonime come callback, è possibile fare riferimento a questo per utilizzare altri metodi di callback.