stopAll
void Worker::stopAll(void)
Arrête le processus actuel et quitte.
Attention
Worker::stopAll()est utilisé pour arrêter le processus actuel. Une fois le processus actuel arrêté, le processus principal lancera immédiatement un nouveau processus. Si vous souhaitez arrêter l'ensemble du service workerman, veuillez appelerposix_kill(posix_getppid(), SIGINT)
Paramètres
Aucun paramètre
Valeur de retour
Pas de retour
Exemple max_request
Dans l'exemple ci-dessous, chaque sous-processus exécutera stopAll et quittera après avoir traité 1000 demandes, afin de redémarrer un nouveau processus. Cela ressemble à l'attribut max_request de php-fpm, principalement utilisé pour résoudre les problèmes de fuite de mémoire causés par des bugs dans le code métier PHP.
start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// Chaque processus exécute au maximum 1000 demandes
define('MAX_REQUEST', 1000);
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
// Nombre de demandes déjà traitées
static $request_count = 0;
$connection->send('hello http');
// Si le nombre de demandes atteint 1000
if(++$request_count >= MAX_REQUEST)
{
/*
* Quitter le processus actuel, le processus principal redémarrera immédiatement un nouveau processus
* pour compléter le redémarrage du processus
*/
Worker::stopAll();
}
};
Worker::runAll();