stopAll

void Worker::stopAll(void)

يوقف العملية الحالية ويخرج.

ملحوظة
Worker::stopAll() تُستخدم لإيقاف العملية الحالية. بعد أن تخرج العملية الحالية، ستقوم العملية الرئيسية على الفور بإعادة تشغيل عملية جديدة. إذا كنت ترغب في إيقاف خدمة Workerman بالكامل، يرجى استدعاء posix_kill(posix_getppid(), SIGINT)

المعاملات

لا توجد معاملات

قيمة الإرجاع

لا توجد قيمة إرجاع

المثال max_request

في المثال أدناه، بعد معالجة كل 1000 طلب، يقوم العملية الفرعية بتنفيذ stopAll للخروج، من أجل إعادة تشغيل عملية جديدة تمامًا. مشابه لخاصية max_request في php-fpm، والذي يُستخدم بشكل أساسي لحل مشكلات تسرب الذاكرة الناجمة عن أخطاء في كود الأعمال PHP.

start.php

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

// كل عملية يمكنها معالجة ما يصل إلى 1000 طلب
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // عدد الطلبات التي تم معالجتها بالفعل
    static $request_count = 0;

    $connection->send('hello http');
    // إذا وصل عدد الطلبات إلى 1000
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * الخروج من العملية الحالية، وستقوم العملية الرئيسية على الفور بإعادة تشغيل عملية جديدة لتعويضها
         * وبالتالي إكمال إعادة تشغيل العملية
         */
        Worker::stopAll();
    }
};

Worker::runAll();