stopAll

void Worker::stopAll(void)

Ferma il processo corrente e esce.

Nota
Worker::stopAll() è usato per fermare il processo corrente; una volta uscito, il processo principale avvierà immediatamente un nuovo processo. Se desideri fermare l'intero servizio workerman, chiama posix_kill(posix_getppid(), SIGINT)

Parametri

Nessun parametro

Valore di ritorno

Nessun ritorno

Esempio max_request

Nell'esempio seguente, il sottoprocesso esegue stopAll per uscire dopo aver gestito 1000 richieste, in modo da riavviare un processo completamente nuovo. Simile all'attributo max_request di php-fpm, serve principalmente a risolvere problemi di perdita di memoria causati da bug nel codice business PHP.

start.php

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

// Ogni processo gestisce al massimo 1000 richieste
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // Numero di richieste già elaborate
    static $request_count = 0;

    $connection->send('hello http');
    // Se il numero di richieste raggiunge 1000
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * Esci dal processo corrente; il processo principale riavvierà immediatamente un nuovo processo
         * per completare il riavvio del processo
         */
        Worker::stopAll();
    }
};

Worker::runAll();