GatewayWorker 多个$worker->count问题

我在start_businessworker.php设置为 $worker->count=2。
 
然后在 Event.php onWorkerStart中编写 第一个进程的业务逻辑代码,另一个进程没有编写任何代码,是不是另一个进程这样就没什么作用了。
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = 2;
// 服务注册地址
$worker->registerAddress = '127.0.0.1:1510';

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START')) {
Worker::runAll();
}
class Events
{


public static function onWorkerStart($businessWorker)
{
if ($businessWorker->id == 0) {
//编写业务逻辑
}
已邀请:

abcde123456 - IT

赞同来自:

是的

嘻嘻哈哈

赞同来自:

那我要处理大量的业务逻辑,要查询数据库等,并且推送给相关客户端。只在那一个进程里面写,这样会不会导致workerman堵塞,甚至异常。

th

赞同来自:

超出一定量的业务逻辑一个进程肯定撑不住,会堵塞,数据库查询不是异步更会堵塞。但为什么不多进程???

blogdaren - 乐于分享的PHP码农【http://www.blogdaren.com】

赞同来自:

1、若业务阻塞就会导致进程阻塞,比如查询数据库这种外部IO,如果执行缓慢就会导致进程挂起,题主描述很符合繁重业务场景,所以应该再另起一组任务集群异步处理业务。
2、应该用多进程模型更合理。

要回复问题请先登录注册