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.