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.