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 Sieposix_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();