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, chameposix_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();