stopAll

void Worker::stopAll(void)

Detiene el proceso actual y sale.

Nota
Worker::stopAll() se utiliza para detener el proceso actual, después de que el proceso actual salga, el proceso principal iniciará inmediatamente un nuevo proceso. Si deseas detener todo el servicio de workerman, llama a posix_kill(posix_getppid(), SIGINT)

Parámetros

Sin parámetros

Valor de retorno

Sin retorno

Ejemplo max_request

En el siguiente ejemplo, el subproceso ejecuta stopAll para salir después de procesar 1000 solicitudes, con el fin de reiniciar un nuevo proceso. Es similar al atributo max_request de php-fpm, y se utiliza principalmente para resolver problemas de fugas de memoria causados por errores en el código de negocio de PHP.

start.php

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

// Cada proceso puede ejecutar un máximo de 1000 solicitudes
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // Ya se han procesado solicitudes
    static $request_count = 0;

    $connection->send('hello http');
    // Si el número de solicitudes alcanza 1000
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * Salir del proceso actual, el proceso principal inmediatamente iniciará un nuevo proceso para reemplazarlo
         * completando así el reinicio del proceso
         */
        Worker::stopAll();
    }
};

Worker::runAll();