现在webman有两个业务 一个是对外的API 还有一个是admin

lyjslct

问题描述

但是他们共用一个后台进程
可否让admin 单独开自己的webman进程
这样 api 和webman 就互不干扰!
这里写问题具体描述

391 2 1
2个回答

胡桃

唯一的办法,启用三个 Worker.

一个负责 API,一个负责 admin,剩下的负责代理,根据 url 负责转发业务到不同的 Worker。

看上去很像套了一层 Nginx. 因为 Workerman 的链接全部由 Worker 维持,所以无论如何也至少需要一个代理。

  • 暂无评论
walkor 打赏
  • lyjslct 2024-09-09

    我现在就用了这个方式!
    把admin 转到新的proess

    'admin' => [
        'handler' => \Webman\App::class,
        'listen' => 'http://0.0.0.0:8686',
        'count' => 32, // 进程数
        'user' => '',
        'group' => '',
        'reusePort' => true,
        'constructor' => [
            'request_class' => \support\Request::class, // request类设置
            'logger' => \support\Log::channel('admin'), // 日志实例
            'app_path' => app_path(), // app目录位置
            'public_path' => public_path() // public目录位置
        ]
    ]

    但是这个admin 业务处理明显慢了,没有admin快了

  • lyjslct 2024-09-09

    没有webman 进程快
    return [
    'listen' => 'http://0.0.0.0:8787',
    'transport' => 'tcp',
    'context' => [],
    'name' => 'webman',
    'count' => cpu_count() 4,
    'user' => 'www',
    'group' => 'www',
    'reusePort' => true,
    'event_loop' => '',
    'stop_timeout' => 2,
    'pid_file' => runtime_path() . '/webman.pid',
    'status_file' => runtime_path() . '/webman.status',
    'stdout_file' => runtime_path() . '/logs/stdout.log',
    'log_file' => runtime_path() . '/logs/workerman.log',
    'max_package_size' => 10
    1024 * 1024
    ];

  • walkor 2024-09-09

    进程是一样的,只能说你业务慢

  • lyjslct 2024-09-09

    proess 里面配置和 admin

    server里面的webman
    是一样的性质么?
    不存在什么差异吗

  • walkor 2024-09-09

    没有差异

  • lyjslct 2024-09-09

    大佬 顺便再问下
    webman 里面除了redis 还有什么可以共享数据!!!就webman自带的那种

  • walkor 2024-09-09

    和普通框架一样,数据库也可以

  • lyjslct 2024-09-09

    数据库不够快!
    有没有全局的变量可以操作!

  • walkor 2024-09-09

    插件里找下吧

  • lyjslct 2024-09-09

    好的 谢谢大佬

×
🔝