onWorkerReload
要求(workerman >= 3.2.5)
Beschreibung:
callback Worker::$onWorkerReload
Diese Funktion wird nicht häufig verwendet.
Setzt den Callback, der ausgeführt wird, wenn der Worker ein reload-Signal erhält.
Mit dem onWorkerReload-Callback können viele Dinge gemacht werden, zum Beispiel die Geschäfts-Konfigurationsdateien neu zu laden, ohne den Prozess neu starten zu müssen.
Hinweis:
Die Standardaktion des Unterprozesses beim Empfang eines reload-Signals ist, den Prozess neu zu starten, um den neuen Prozess zu ermöglichen, den Geschäftscode neu zu laden und das Code-Update abzuschließen. Daher ist es normal, dass der Unterprozess nach der Ausführung des onWorkerReload-Callbacks sofort beendet wird.
Wenn Sie möchten, dass der Unterprozess nach dem Empfang eines reload-Signals nur das onWorkerReload ausführt und sich nicht beenden soll, können Sie das entsprechende reloadable-Attribut des Worker-Objekts beim Initialisieren der Worker-Instanz auf false setzen.
Parameter der Callback-Funktion
$worker
Das ist das Worker-Objekt.
Beispiel
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
// Setzen Sie reloadable auf false, d.h. der Unterprozess führt beim Empfang eines reload-Signals keinen Neustart durch
$worker->reloadable = false;
// Informieren Sie nach dem Reload alle Clients, dass der Server ein Reload durchgeführt hat
$worker->onWorkerReload = function(Worker $worker)
{
foreach($worker->connections as $connection)
{
$connection->send('worker reloading');
}
};
// Worker ausführen
Worker::runAll();
Hinweis: Neben der Verwendung von anonymen Funktionen als Callback können Sie auch hier nachlesen, um andere Callback-Schreibweisen zu verwenden.