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 appeler posix_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();