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