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

时间:2016-02-14 14:06:24

标签: mysql laravel laravel-5

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

这是因为Laravel的构建方式。它的内部流程确保在以后需要时存在数据库。

我会做以下事情:

'driver' => 'sqlite',

和sqlite连接设置

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

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