rest - laravel/lumen REST API 间歇性地修改 env 并使用 'forge' 数据库

标签 rest laravel-5 lumen

似乎有一个相关的问题here .

我有一个 js 前端与 lumen REST API 通信。

我的前端最终可能每秒向同一端点发出大量请求。

比方说api/supplier/<ID>

其中大多数都会成功返回,但大约 5%-10% 的情况下 API 返回的错误如下:

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,
    ],

如果我直接从浏览器请求它们,我不会收到错误。

问题似乎与请求频率有关,每秒请求数越多 = 错误越多。
如果我重新加载页面,错误将出现在不同的项目上。

如果我用我的值(database/username/pwd/prefix)覆盖上面的/vendor/.../config/database.php 那么我不会收到任何错误,但这几乎不是正确的方法并且使得我怀疑某个地方有错误。

环境:

  • Windows 8
  • XAMPP 5.6.8 和 PHP 5.6.8
  • Mysql 5.6.24
  • Lumen 5.1.3(Laravel 组件 5.1.*)

我的问题是

  1. 这个间歇性的“伪造”数据库名称从何而来?
  2. 如何始终获取我的真实数据库详细信息?
  3. 我是否应该以某种方式集中我的连接,因为每秒可能有数百个连接,或者 laravel/lumen 是否已经处理好这个问题了?

最佳答案

您可以在项目的根目录上创建一个配置目录,然后在database.php中创建一个文件,您可以按照自己的方式修改该文件,而不是覆盖框架内的文件database.php。 Lumen 明白您想要使用自己的配置文件,而不是自带默认框架的配置文件。

检查是否在 bootstrap/app.php 中取消注释此行

Dotenv::load(__DIR__.'/../');

关于rest - laravel/lumen REST API 间歇性地修改 env 并使用 'forge' 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950400/

相关文章:

laravel - Lumen 首次安装 - ReflectionException : Class redis does not exist

java - 为简单的 REST Web 服务调整 SoapUI

php - Laravel where - 如何使用条件引用相同的模式?

php - Laravel 5.2 : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails, 不使用 laravelcollective

php - Laravel从数据库返回的日期时间与同一数据库中的记录不同

php - anahkiasen/用于 Lumen/(Laravel 微框架)的前表单生成器库

node.js - 使用nodejs访问rest api

java - 使用 Retrofit 将 id 的 int 值转换为 String 时找不到资源

java - Spring Boot Data Rest不支持响应式?

laravel,我如何忽略特殊路线?