hyperf 配置文件

安装

composer require hyperf/config

配置文件结构

config
├── autoload // 此文件夹内的配置文件会被配置组件自己加载,并以文件夹内的文件名作为第一个键值
│   ├── amqp.php  // 用于管理 AMQP 组件
│   ├── annotations.php // 用于管理注解
│   ├── apollo.php // 用于管理基于 Apollo 实现的配置中心
│   ├── aspects.php // 用于管理 AOP 切面
│   ├── async_queue.php // 用于管理基于 Redis 实现的简易队列服务
│   ├── cache.php // 用于管理缓存组件
│   ├── commands.php // 用于管理自定义命令
│   ├── consul.php // 用于管理 Consul 客户端
│   ├── databases.php // 用于管理数据库客户端
│   ├── dependencies.php // 用于管理 DI 的依赖关系和类对应关系
│   ├── devtool.php // 用于管理开发者工具
│   ├── exceptions.php // 用于管理异常处理器
│   ├── listeners.php // 用于管理事件监听者
│   ├── logger.php // 用于管理日志
│   ├── middlewares.php // 用于管理中间件
│   ├── opentracing.php // 用于管理调用链追踪
│   ├── processes.php // 用于管理自定义进程
│   ├── redis.php // 用于管理 Redis 客户端
│   └── server.php // 用于管理 Server 服务
├── config.php // 用于管理用户或框架的配置,如配置相对独立亦可放于 autoload 文件夹内
├── container.php // 负责容器的初始化,作为一个配置文件运行并最终返回一个 Psr\Container\ContainerInterface 对象
└── routes.php // 用于管理路由

server.php 配置说明

<?php
declare(strict_types=1);

use Hyperf\Server\Server;
use Hyperf\Server\Event;

return [
    // 这里省略了该文件的其它配置
    'settings' => [
        'enable_coroutine' => true, // 开启内置协程
        'worker_num' => swoole_cpu_num(), // 设置启动的 Worker 进程数
        'pid_file' => BASE_PATH . '/runtime/hyperf.pid', // master 进程的 PID
        'open_tcp_nodelay' => true, // TCP 连接发送数据时会关闭 Nagle 合并算法,立即发往客户端连接
        'max_coroutine' => 100000, // 设置当前工作进程最大协程数量
        'open_http2_protocol' => true, // 启用 HTTP2 协议解析
        'max_request' => 100000, // 设置 worker 进程的最大任务数
        'socket_buffer_size' => 2 * 1024 * 1024, // 配置客户端连接的缓存区长度
    ],
];

此配置文件用于管理 Server 服务,其中的 settings 选项可以直接使用由 Swoole Server 提供的选项

设置守护进程 :
可在 settings 中增加 'daemonize' => true,执行 php bin/hyperf.php start 后,程序将转入后台作为守护进程运行

单独的 Server 配置

单独的 Server 配置需要添加在对应 servers 的 settings 当中,如 jsonrpc 协议的 TCP Server 配置启用 EOF 自动分包和设置 EOF 字符串

<?php

use Hyperf\Server\Server;
use Hyperf\Server\Event;

return [
    // 这里省略了该文件的其它配置
    'servers' => [
        [
            'name' => 'jsonrpc',
            'type' => Server::SERVER_BASE,
            'host' => '0.0.0.0',
            'port' => 9503,
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                Event::ON_RECEIVE => [\Hyperf\JsonRpc\TcpServer::class, 'onReceive'],
            ],
            'settings' => [
                'open_eof_split' => true, // 启用 EOF 自动分包
                'package_eof' => "\r\n", // 设置 EOF 字符串
            ],
        ],
    ],
];

获取配置

config.phpautoload 文件夹内的配置文件的关系

1. config()函数

  1. config.phpautoload 文件夹内的配置文件在服务启动时都会被扫描并注入到 Hyperf\Contract\ConfigInterface 对应的对象中

  2. config.phpautoload 调用方式不同
    config.php

config('app_name')
config('databases.default.host')

2.初始化注入

<?php

declare(strict_types=1);

namespace App\Controller;

use Hyperf\Di\Annotation\AnnotationCollector;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\Contract\ConfigInterface;

/**
 * @AutoController(prefix="user")
 */
class UserController extends AbstractController
{

    /**
     * @var ConfigInterface
     */
    protected $config;

    public function __construct(ConfigInterface $config)
    {
        $this->config = $config;
    }



    public function configs()
    {
        echo("========begin============ \n");
        $app_name = $this->config->get('app_name');
        var_dump($app_name);
        echo("========end============ \n");
        return 'configs';
    }

}

在这里插入图片描述

@Inject() 注入

use Hyperf\Di\Annotation\Inject;
    /**
     * @Inject()
     * @var \Hyperf\Contract\ConfigInterface
     */
    private $configValue;
    public function demo1()
    {
        echo("========begin======== \n");
        var_dump($this->configValue->get('app_name'));
        echo("========end========== \n");
        return 'demo1';
    }

在这里插入图片描述

@Value() 获取配置

use Hyperf\Config\Annotation\Value;

    /**
     * @Value("databases.default.host")
     */
    private $configs;
    public function demo2()
    {
        echo("========begin======== \n");
        var_dump($this->configs);
        echo("========end========== \n");
        return 'demo1';
    }

在这里插入图片描述

判断配置是否存在


/**
* @Inject()
* @var \Hyperf\Contract\ConfigInterface
*/
private $configValue;
$this->configValue->has('databases.default.host')

在这里插入图片描述

配置中心

Hyperf 为您提供了分布式系统的外部化配置支持,目前支持由携程开源的 Apollo、阿里云 ACM 应用配置管理、ETCD、Nacos 以及 Zookeeper 作为配置中心的支持。 关于配置中心的使用细节我们由 配置中心 章节来阐述。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值