laravel / lumen REST API 间歇性地 ingores env 并使用 'forge' 数据库
laravel / lumen REST API intermittently ingores env and uses 'forge' database
似乎有一个相关的问题here。
我有一个 js 前端与 lumen REST 对话 API。
我的前端最终可能每秒向同一个端点发出大量请求。
假设api/supplier/<ID>
其中大多数 return 成功,但大约 5%-10% 的时间 API return 出现如下错误:
Whoops, looks like something went wrong.
1/1
PDOException in Connector.php line 50:
SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'
这表明以某种方式使用了错误的数据库配置。
代码中唯一可以找到字符串 'forge'
(包括引号)的地方是
...\vendor\laravel\lumen-framework\config\database.php
然而,从相关的 mysql 部分看来,如果使用它,用户名 'forge' 也会被设置,而我的 .env 被忽略。
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_PREFIX', ''),
'timezone' => env('DB_TIMEZONE','+00:00'),
'strict' => false,
],
如果我直接从浏览器请求它们,我不会收到任何错误。
问题好像和请求频率有关,多requests/sec=多错误。
如果我重新加载页面,错误将出现在不同的项目上。
如果我用我的值 (database/username/pwd/prefix) 覆盖上面的 /vendor/.../config/database.php 那么我不会收到任何错误,但这很难正确的方法,让我怀疑某处存在错误。
环境:
- Windows 8
- XAMPP 5.6.8 与 PHP 5.6.8
- Mysql 5.6.24
- 流明 5.1.3(Laravel 组件 5.1.*)
我的问题是
- 这个 'forge' 数据库名称断断续续来自哪里?
- 如何始终在其中获取我的真实数据库详细信息?
- 我是否应该以某种方式汇集我的连接,因为可能有数百个 connections/sec 还是 laravel/lumen 已经解决了这个问题?
您可以在项目的根目录下创建一个配置目录,而不是在框架内覆盖文件 database.php,然后 database.php 创建一个文件,您可以按照自己的方式修改该文件。 Lumen 了解您想要使用自己的配置文件,而不是自带默认框架的配置文件。
检查是否在 bootstrap/app.php
中取消注释这一行
Dotenv::load(__DIR__.'/../');
似乎有一个相关的问题here。
我有一个 js 前端与 lumen REST 对话 API。
我的前端最终可能每秒向同一个端点发出大量请求。
假设api/supplier/<ID>
其中大多数 return 成功,但大约 5%-10% 的时间 API return 出现如下错误:
Whoops, looks like something went wrong.
1/1 PDOException in Connector.php line 50: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'
这表明以某种方式使用了错误的数据库配置。
代码中唯一可以找到字符串 'forge'
(包括引号)的地方是
...\vendor\laravel\lumen-framework\config\database.php
然而,从相关的 mysql 部分看来,如果使用它,用户名 'forge' 也会被设置,而我的 .env 被忽略。
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_PREFIX', ''),
'timezone' => env('DB_TIMEZONE','+00:00'),
'strict' => false,
],
如果我直接从浏览器请求它们,我不会收到任何错误。
问题好像和请求频率有关,多requests/sec=多错误。
如果我重新加载页面,错误将出现在不同的项目上。
如果我用我的值 (database/username/pwd/prefix) 覆盖上面的 /vendor/.../config/database.php 那么我不会收到任何错误,但这很难正确的方法,让我怀疑某处存在错误。
环境:
- Windows 8
- XAMPP 5.6.8 与 PHP 5.6.8
- Mysql 5.6.24
- 流明 5.1.3(Laravel 组件 5.1.*)
我的问题是
- 这个 'forge' 数据库名称断断续续来自哪里?
- 如何始终在其中获取我的真实数据库详细信息?
- 我是否应该以某种方式汇集我的连接,因为可能有数百个 connections/sec 还是 laravel/lumen 已经解决了这个问题?
您可以在项目的根目录下创建一个配置目录,而不是在框架内覆盖文件 database.php,然后 database.php 创建一个文件,您可以按照自己的方式修改该文件。 Lumen 了解您想要使用自己的配置文件,而不是自带默认框架的配置文件。
检查是否在 bootstrap/app.php
中取消注释这一行Dotenv::load(__DIR__.'/../');