流明如何缓存配置?

问题描述 投票:3回答:1

我正在寻找如何用流明执行等效的Laravel命令

php artisan config:cache

这似乎不是作为Lumen工艺师的命令可用的?

更新我找到了this related question但这仅表示它不存在。

我目前在lumen和DotEnv库读取.env文件中遇到快速请求时遇到麻烦。这会导致无法读取.env文件,并且流明会使用其默认设置,这对我的应用程序是不正确的。

我不愿意将config:cache函数从laravel复制到我的lumen应用程序。这似乎不对吗?流明的处理方式是什么?

更新2在研究了Lumen和Illuminate代码之后,似乎更可靠的方法是定义具有所需值的文件(例如config / database.php),而不使用.env文件?

lumen
1个回答
0
投票

您不必因问题而在Lumen中缓存配置。对于Windows + WAPM,dotenv问题有一个不同的解决方案(可能其他环境也会受到影响,请参见下面的链接)。

您必须为现在具有相同名称的.env变量赋予不同的名称,并在各自的config/<configname>.php的文件中更改变量名称。示例如下。

说明

假设您在同一服务器下有两个应用程序,在WAMP下有不同的虚拟主机。一个应用是Lumen API A,另一个是Lumen API B。

[该问题来自以下事实:当HTTP请求到达被调用方时,被调用方(分别为API B).env变量不会被被调用方(分别为API B).env变量覆盖。但这仅在这些变量具有相同的名称时。

即您的调用方(API A).env变量正在内存中读取

DB_DATABASE=<api_a_1>
DB_USERNAME=<api_a_2>

尽管被呼叫者被呼叫者.env文件具有如下所示,但不会被被呼叫者的(API B)端代替:

DB_DATABASE=<api_b_1>
DB_USERNAME=<api_b_2>

解决方案是使用不同的名称命名,然后将新名称放入config/database.php。像这样:

API A:

# .env file
API_A_DB_DATABASE=<api_a_1>
API_A_DB_USERNAME=<api_a_2>
// config/database.php file
...
// ... other keys
'connections'=> [
    // ... other keys
    'mysql'=> [
        'database' => env('API_A_DB_DATABASE', 'forge'),
        'username' => env('API_A_DB_USERNAME', 'forge'),
    ]
]
...

详细信息

我建议您阅读this explanation回购问题列表上的laravel/framework。如果调用方是Laravel应用,则可以通过php artisan config:cache解决相同的问题,请参阅此SO帖子的详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.