stopAll

void Worker::stopAll(void)

Stoppt den aktuellen Prozess und beendet ihn.

Hinweis
Worker::stopAll() wird verwendet, um den aktuellen Prozess zu stoppen. Nach dem Beenden des aktuellen Prozesses wird der Hauptprozess sofort einen neuen Prozess starten. Wenn Sie den gesamten Workerman-Dienst stoppen möchten, rufen Sie posix_kill(posix_getppid(), SIGINT) auf.

Parameter

Keine Parameter

Rückgabewert

Kein Rückgabewert

Beispiel max_request

Im folgenden Beispiel wird der Unterprozess nach der Bearbeitung von 1000 Anfragen stopAll ausführen und beenden, um einen ganz neuen Prozess neu zu starten. Ähnlich wie die max_request-Eigenschaft von php-fpm, die hauptsächlich zur Behebung von durch Fehler im PHP-Anwendungscode verursachten Speicherlecks dient.

start.php

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// Jeder Prozess führt maximal 1000 Anfragen aus
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // Bereits bearbeitete Anfragen
    static $request_count = 0;

    $connection->send('hello http');
    // Wenn die Anzahl der Anfragen 1000 erreicht
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * Beende den aktuellen Prozess, der Hauptprozess wird sofort einen neuen Prozess
         * starten, um ihn zu ersetzen
         * Dadurch wird der Prozessneustart abgeschlossen
         */
        Worker::stopAll();
    }
};

Worker::runAll();