stopAll

void Worker::stopAll(void)

Para parar o processo atual e sair.

Nota
Worker::stopAll() é usado para parar o processo atual, e depois que o processo atual sai, o processo principal irá imediatamente iniciar um novo processo. Se você deseja parar todo o serviço workerman, por favor, chame posix_kill(posix_getppid(), SIGINT)

Parâmetros

Sem parâmetros

Retorno

Sem retorno

Exemplo max_request

No exemplo abaixo, o subprocesso executa stopAll para sair após processar 1000 solicitações, a fim de reiniciar um novo processo. Isso é semelhante ao atributo max_request do php-fpm, e é usado principalmente para resolver problemas de vazamento de memória causados por bugs na lógica de negócios do PHP.

start.php

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

// Cada processo pode executar no máximo 1000 solicitações
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // Número de solicitações já processadas
    static $request_count = 0;

    $connection->send('hello http');
    // Se o número de solicitações atingir 1000
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * Sair do processo atual, o processo principal irá imediatamente reiniciar um novo processo para substituí-lo
         * completando assim a reinicialização do processo
         */
        Worker::stopAll();
    }
};

Worker::runAll();