MyQEE\Server\Server::checkConfig PHP Метод

checkConfig() защищенный Метод

protected checkConfig ( )
    protected function checkConfig()
    {
        if (isset(self::$config['server']['mode']) && self::$config['server']['mode'] === 'base') {
            # 用 BASE 模式启动
            self::$serverMode = SWOOLE_BASE;
        }
        self::$config['server']['sock_type'] = (int) self::$config['server']['sock_type'];
        if (self::$config['server']['sock_type'] < 1 || self::$config['server']['sock_type'] > 6) {
            self::$config['server']['sock_type'] = 1;
        }
        # 设置启动模式
        if (isset(self::$config['server']['http']['use'])) {
            if (self::$config['server']['http']['use'] && isset(self::$config['server']['http']['websocket']) && self::$config['server']['http']['websocket']) {
                self::$serverType = 3;
            } elseif (self::$config['server']['http']['use']) {
                self::$serverType = 1;
            } elseif (isset(self::$config['server']['http']['websocket']) && self::$config['server']['http']['websocket']) {
                self::$serverType = 2;
            }
        }
        if (self::$serverType === 3 || self::$serverType === 1) {
            # 开启API
            if (self::$config['server']['http']['api']) {
                self::$workers['API'] = 'API';
            }
            # 开启管理
            if (self::$config['server']['http']['manager']) {
                self::$workers['Manager'] = 'Manager';
            }
        }
        global $argv;
        if (in_array('-vvv', $argv)) {
            self::$config['server']['log']['level'][] = 'info';
            self::$config['server']['log']['level'][] = 'debug';
            self::$config['server']['log']['level'][] = 'trace';
            error_reporting(E_ALL ^ E_NOTICE);
        } elseif (in_array('-vv', $argv) || isset($option['debug'])) {
            self::$config['server']['log']['level'][] = 'info';
            self::$config['server']['log']['level'][] = 'debug';
        } elseif (in_array('-v', $argv)) {
            self::$config['server']['log']['level'][] = 'info';
        }
        if (isset(self::$config['server']['log']['level'])) {
            self::$config['server']['log']['level'] = array_unique((array) self::$config['server']['log']['level']);
        }
        # 设置log等级
        foreach (self::$config['server']['log']['level'] as $type) {
            if (isset(self::$config['server']['log']['path']) && self::$config['server']['log']['path']) {
                self::$logPath[$type] = str_replace('$type', $type, self::$config['server']['log']['path']);
                if (is_file(self::$logPath[$type]) && !is_writable(self::$logPath[$type])) {
                    echo "给定的log文件不可写: " . self::$logPath[$type] . "\n";
                }
            } else {
                self::$logPath[$type] = true;
            }
        }
        # 设置 swoole 的log输出路径
        if (isset(self::$config['swoole']['log_file']) && self::$config['server']['log']['path']) {
            self::$config['swoole']['log_file'] = str_replace('$type', 'swoole', self::$config['server']['log']['path']);
        }
        # 无集群模式
        if (!isset(self::$config['clusters']['mode']) || !self::$config['clusters']['mode']) {
            self::$config['clusters']['mode'] = 'none';
        }
        switch (self::$config['clusters']['mode']) {
            case 'simple':
            case 'task':
                self::$clustersType = 1;
                break;
            case 'advanced':
                self::$clustersType = 2;
                break;
        }
        # 集群服务器
        if (self::$clustersType > 0) {
            if (!isset(self::$config['clusters']['register']) || !is_array(self::$config['clusters']['register'])) {
                self::warn('集群模式开启但是缺少 clusters.register 参数');
                exit;
            }
            if (!isset(self::$config['clusters']['register']['ip'])) {
                self::warn('集群模式开启但是缺少 clusters.register.ip 参数');
                exit;
            }
            # 注册服务器端口
            if (!isset(self::$config['clusters']['register']['port'])) {
                self::$config['clusters']['register']['port'] = 1310;
            }
            # 集群间通讯端口
            if (!isset(self::$config['clusters']['port'])) {
                self::$config['clusters']['port'] = 1311;
            }
            # 高级模式下任务进程端口
            if (self::$clustersType === 2 && !isset(self::$config['clusters']['task_port'])) {
                self::$config['clusters']['task_port'] = 1312;
            }
            if (isset(Server::$config['clusters']['register']['key']) && Server::$config['clusters']['register']['key']) {
                # 设置集群注册服务器密码
                Register\RPC::$RPC_KEY = Server::$config['clusters']['register']['key'];
            }
        }
        # 缓存目录
        if (isset(self::$config['swoole']['task_tmpdir'])) {
            if (!is_dir(self::$config['swoole']['task_tmpdir'])) {
                if (self::$config['swoole']['task_tmpdir'] !== '/dev/shm/') {
                    self::warn('定义的 swoole.task_tmpdir 的目录 ' . self::$config['swoole']['task_tmpdir'] . ' 不存在, 已改到 /tmp/ 目录');
                }
                self::$config['swoole']['task_tmpdir'] = '/tmp/';
            }
        }
        # 对象的命名空间
        if (isset(self::$config['server']['namespace']) && self::$config['server']['namespace']) {
            $ns = trim(self::$config['server']['namespace'], '\\');
            if ($ns) {
                self::$namespace = "\\{$ns}\\";
            }
        }
    }