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 aposix_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();