您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman单入口多实例(多监听)与worker的id属性
发布时间:2021-11-28 23:25:18编辑:雪饮阅读()
进程编号id的分配是基于每个worker实例的。每个worker实例都从0开始给自己的进程编号,所以worker实例间进程编号会有重复,但是一个worker实例中的进程编号不会重复。例如下面的例子:
start.php:
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
// worker实例1有4个进程,进程id编号将分别为0、1、2、3
$worker1 = new Worker('tcp://0.0.0.0:8585');
// 设置启动4个进程
$worker1->count = 4;
// 每个进程启动后打印当前进程id编号即 $worker1->id
$worker1->onWorkerStart = function($worker1)
{
echo "worker1->id={$worker1->id}\n";
};
// worker实例2有两个进程,进程id编号将分别为0、1
$worker2 = new Worker('tcp://0.0.0.0:8686');
// 设置启动2个进程
$worker2->count = 2;
// 每个进程启动后打印当前进程id编号即 $worker2->id
$worker2->onWorkerStart = function($worker2)
{
echo "worker2->id={$worker2->id}\n";
};
// 运行worker
Worker::runAll();
运行如:
[root@localhost workerman]# php -c /usr/local/php734/lib/php/php.ini start.php start
Workerman[start.php] start in DEBUG mode
---------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.3.4
----------------------------------------- WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none tcp://0.0.0.0:8585 4 [OK]
tcp root none tcp://0.0.0.0:8686 2 [OK]
--------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
worker1->id=0
worker1->id=2
worker1->id=1
worker1->id=3
worker2->id=0
worker2->id=1
以上示例也证实了workerman可以同一个入口脚本实现多个监听,多个worker实例。
关键字词:workerman,单入口,多实例,多监听