请问workerman-thrift-rpc如何启动多个服务?


TIM截图20190603164219.png

 如果要同时启动HelloWorld,HelloWorld2,HelloWorld3 服务,是这样写吗?
$worker = new ThriftWorker('tcp://0.0.0.0:8000');
$worker->count = 1;
$worker->class = 'HelloWorld';

$worker = new ThriftWorker('tcp://0.0.0.0:8001');
$worker->count = 1;
$worker->class = 'HelloWorld2';

$worker = new ThriftWorker('tcp://0.0.0.0:8002');
$worker->count = 1;
$worker->class = 'HelloWorld3';
如果要启动的服务很多,岂不是要写很多这样的代码,请问有更好的处理方式吗?真实的工作环境是怎么处理的?
 
然后还想请教个问题,如果服务的进程因为某种原因挂了,workman会怎么处理呢?如果再次生成新的服务,它的端口号会变吗?如果变了,客户端还是连的原来的端口,岂不是就报错了,如果那样应该怎么办呢?
 
麻烦了,谢谢。
已邀请:

wangn

赞同来自:

你可以仿照一个demo 核心代码  
// 标记是全局启动
define('GLOBAL_START', 1);

require_once __DIR__ . '/vendor/autoload.php';

// 加载所有Applications/*/start.php,以便启动所有服务
foreach(glob(__DIR__.'/Applications/*/start*.php') as $start_file)
{
require_once $start_file;
}

//运行所有服务

Worker::runAll();

taozywu - http://athanb.com -- 做更好的自己!

赞同来自:

@zhongzhen
<?php

$configs = array(
array(
"uri" => "tcp://0.0.0.0:8000", "class" => "HelloWorld1",
),
array(
"uri" => "tcp://0.0.0.0:8001", "class" => "HelloWorld2",
),
array(
"uri" => "tcp://0.0.0.0:8002", "class" => "HelloWorld3",
)
);


foreach ($configs as $c) {

$worker = new ThriftWorker($c['uri']);
$worker->count = 1;
$worker->class = $c['class'];

// input your code @todo
}

要回复问题请先登录注册