stopAll
void Worker::stopAll(void)
Detiene el proceso actual y sale.
Nota
Worker::stopAll()
se utiliza para detener el proceso actual. Una vez que el proceso actual sale, el proceso principal iniciará inmediatamente un nuevo proceso. Si deseas detener todo el servicio de workerman, por favor utilizaposix_kill(posix_getppid(), SIGINT)
.
Parámetros
Sin parámetros.
Valor de retorno
Sin valor de retorno
Ejemplo max_request
En el siguiente ejemplo, el subproceso ejecuta stopAll para salir después de procesar 1000 peticiones, con el propósito de reiniciar un nuevo proceso completamente nuevo. Es similar a la propiedad max_request de php-fpm y se usa principalmente para resolver problemas de fuga de memoria causados por errores en el código del negocio de php.
start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// Máximo 1000 peticiones por proceso
define('MAX_REQUEST', 1000);
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
// Número de peticiones procesadas
static $request_count = 0;
$connection->send('hello http');
// Si el número de peticiones alcanza 1000
if(++$request_count >= MAX_REQUEST)
{
/*
* Salir del proceso actual, el proceso principal iniciará inmediatamente
* un nuevo proceso completamente nuevo para reemplazarlo y así completar
* el reinicio del proceso.
*/
Worker::stopAll();
}
};
Worker::runAll();