stopAll

void Worker::stopAll(void)

หยุดกระบวนการปัจจุบันและออกจากระบบ

注意
Worker::stopAll() ใช้สำหรับหยุดกระบวนการปัจจุบัน เมื่อกระบวนการปัจจุบันออกจากระบบ กระบวนการหลักจะเริ่มกระบวนการใหม่ทันที หากคุณต้องการหยุดบริการ workerman ทั้งหมด ให้เรียกใช้ posix_kill(posix_getppid(), SIGINT)

参数

ไม่มีพารามิเตอร์

返回值

ไม่มีค่าที่ส่งกลับ

范例 max_request

ในตัวอย่างด้านล่าง กระบวนการลูกค้าจะออกจากระบบหลังจากประมวลผลคำขอ 1000 รายการ เพื่อเริ่มกระบวนการใหม่ที่สมบูรณ์ ตัวแปรนี้คล้ายกับคุณสมบัติ 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();