Laravel 在每次请求时连接到数据库。我怎样才能阻止这个?

Laravel connects to the database on every request. How can I stop this?

我正在使用 Laravel 5,我注意到在每次加载页面时,laravel 都会尝试连接到数据库。您可以通过为默认数据库设置无效凭据来检查此行为。每次加载页面时都会出现错误,因此这意味着 Laravel 尝试连接到数据库。这甚至发生在维护模式页面上。

这是为什么?有什么可以阻止 Laravel 这样做的吗?不查询数据库的页面无需连接数据库。

发生这种情况是因为 Laravel 的方式已经建成。它的内部流程确保您以后需要时可以使用数据库。

我会做以下事情:

'driver' => 'sqlite',

以及 sqlite 连接设置

'sqlite' => [
    'driver' => 'sqlite',
    'database' => ':memory:',
    'prefix' => '',
]

这样,它将使用内存数据库,当数据库连接关闭时数据库将不复存在,并且由于您不会打开连接,因此您永远不会拥有本地数据库打开。

Laravel 仅在第一次需要数据库时实际连接到数据库。通常,这是您第一次查询数据库。如果您从不查询数据库,它就永远不会尝试连接到它。

这有点简化。您可能有一些自定义代码出于某种原因检查与数据库的连接,并且需要连接到它,但这是一种不太常见的情况,您可能会知道它。

如果您的应用程序在每次页面加载时都连接到数据库,这意味着您正在尝试 运行 在每次页面加载时进行查询。这可能意味着您在中间件、服务提供商甚至您的路由文件中有一个查询 运行。

如果您启用了调试,PDOExecption 从您的无效密码中提供的堆栈跟踪应指向正在尝试的查询,以及它运行 的来源。