关于webman文档的疑问

小阳光

https://www.workerman.net/doc/webman#/process?id=%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e8%af%b4%e6%98%8e
这里缺少一个配置services ,文档里面没有,这是看意思是想做进程内再开一个端口监听

不然start.php中 如下代码不会起作用

foreach ($config['services'] ?? [] as $server) {
            if (!class_exists($server['handler'])) {
                echo "process error: class {$config['handler']} not exists\r\n";
                continue;
            }
            $listen = new Worker($server['listen'] ?? null, $server['context'] ?? []);

            if (isset($server['listen'])) {
                echo "listen: {$server['listen']}\n";
            }
            $class = Container::make($server['handler'], $server['constructor'] ?? []);
            worker_bind($listen, $class);
            $listen->listen();
        }

process.php


<?php

use support\view\Raw;
use support\view\Twig;
use support\view\Blade;
use support\view\ThinkPHP;

return [
    // 文件更新检测
    'monitor' => [
        'handler'     => process\FileMonitor::class,
        'constructor' => [
            // 监控这些目录
            'monitor_dir' => [
                app_path(),
                config_path(),
                base_path() . '/process',
                base_path() . '/support',
                base_path() . '/resource'
            ],
            // 监控这些后缀的文件
            'monitor_extenstions' => [
                'php', 'html', 'htm'
            ]
        ],
        'services'=>[   //注意这里
            [
                'handler'     => process\Test::class,
                'listen'     => "http://127.0.0.1:8090",
            ],
        ]
    ],
    // 其它进程
    /*'websocket'  => [
        'handler'  => process\Websocket::class,
        'listen' => 'websocket://0.0.0.0:8888',
        'count'  => 10,
    ],*/
];
3206 1 0
1个回答

walkor

对,这个是在进程内部开启监听用的。用的不多,所以没有写入文档。

  • 小星 2021-07-25

    请问这个进程内部监听是做什么用的呢

  • walkor 2021-07-26

    有时候一个进程只开一个协议端口可能不够用。这时候可以再开一个协议端口

年代过于久远,无法发表回答
🔝