(1)swoole啟動(dòng)的主進(jìn)程是master進(jìn)程負(fù)責(zé)全局管理,然后master進(jìn)程會(huì)再fork一個(gè)manager進(jìn)程。
(2)manager進(jìn)程開始統(tǒng)一管理進(jìn)程創(chuàng)建回收管理。
(3)manager進(jìn)程根據(jù)設(shè)置的worker_num和task_worker_num來(lái)創(chuàng)建work進(jìn)程和task進(jìn)程
因此啟動(dòng)swoole我們能看到的進(jìn)程數(shù)是:2+worker_num+task_worker_num,2中包含manager進(jìn)程和master進(jìn)程
worker_num是用來(lái)處理請(qǐng)求邏輯的進(jìn)程數(shù),task_num是異步任務(wù)投遞進(jìn)程,專門處理異步任務(wù)的執(zhí)行
例如下面的代碼:
<?php
//構(gòu)建Server對(duì)象
$server = new swoole_server("127.0.0.1", 9503);
//設(shè)置worker進(jìn)程4個(gè)
$server->set([
'worker_num' => 2,
'task_worker_num' => 2,
'daemonize' => false,
]);
//設(shè)置客戶端連接回調(diào)
$server->on('connect', function ($server, $fd) {
});
$server->on('receive', function ($server, $fd, $reactor_id, $data) {
});
//設(shè)置客戶端關(guān)閉回調(diào)
$server->on('close', function ($server, $fd) {
});
//設(shè)置Task回調(diào)
$server->on('Task', function ($serv) {
});
//啟動(dòng)服務(wù)器
$server->start();
查看進(jìn)程:
gao 3429 0.0 0.2 238888 21460 tty1 Sl 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
gao 3430 0.0 0.0 92684 3204 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
gao 3433 0.0 0.0 88260 3364 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
gao 3434 0.0 0.0 88260 3384 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
gao 3435 0.0 0.0 88676 3524 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
gao 3436 0.0 0.0 88676 3552 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
還可以通過swoole提供的$server->manager_pid和$server->master_pid排除測(cè)試