stopAll

void Worker::stopAll(void)

Mevcut süreci durdurur ve çıkar.

Dikkat
Worker::stopAll() mevcut süreci durdurmak için kullanılır, mevcut süreç çıkar çıkmaz ana süreç hemen yeni bir süreç başlatacaktır. Tüm workerman hizmetini durdurmak istiyorsanız, posix_kill(posix_getppid(), SIGINT) çağrısını yapmalısınız.

Parametreler

Hiçbir parametre yok

Dönüş Değeri

Hiçbir dönüş yok

Örnek max_request

Aşağıdaki örnekte, alt süreç her 1000 isteği tamamladıktan sonra stopAll'u çağırarak çıkar ve böylece taze bir süreç başlatır. Bu, php-fpm'in max_request özelliğine benzer ve öncelikle PHP iş kodu hatalarından kaynaklanan bellek sızıntısı sorunlarını çözmek için kullanılır.

start.php

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

// Her süreç en fazla 1000 isteği işleyebilir
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // İşlenen istek sayısı
    static $request_count = 0;

    $connection->send('hello http');
    // Eğer istek sayısı 1000'e ulaşırsa
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * Mevcut süreci durdur
         * Ana süreç hemen yeni bir süreç başlatarak süreci yeniden başlatacaktır
         */
        Worker::stopAll();
    }
};

Worker::runAll();