Laravel 应用程序在连接到数据库时非常慢

2022-08-30 20:38:09

注意:现在我知道问题出在哪里,我修改了问题。它现在只包含所需的信息。

我是Laravel PHP框架的新手。

我有一个非常小的应用程序在我的计算机上工作。它连接到MySQL数据库并具有用户模型。我使用身份验证类登录和注销。

一切正常,但是当我登录时,加载页面大约需要一秒钟,这非常慢。当我没有登录时,这是一个毫秒的问题。

通过使用内置的分析器,我意识到了两个问题。首先,就像我说的,加载页面需要1000多毫秒。其次,框架每次登录页面时都会创建一个SQL。查询搜索具有特定 ID(我的 ID)的用户。我想它在那里是为了获取有关登录用户的信息。但是,难道不应该有某种缓存吗?如果我的网站必须每秒管理许多请求,这会是一个问题吗?

我意识到在视图中使用是导致问题的原因。我有大约4个是我的刀片视图。当我没有时,它走得很快。如果我有一个,它很慢。然后,无论我有多少,它都不会变慢。这就像Auth类的初始化花费太多时间或类似的东西一样。我想这解释了为什么它只发生在我登录时。Auth::check()Auth::check()

我深入研究了Laravel的代码,我发现当第一次调用时,Auth类需要通过从数据库中检索用户的信息来“激活”我的会话。这解释了每个页面请求执行的查询。但是,由于探查器说查询甚至不需要一毫秒即可执行,我仍然不知道为什么它会减慢应用程序的速度。Auth::check()

新信息:即使我不向数据库发送查询,连接到它的简单操作也几乎需要一秒钟。这就是它很慢的原因。我认为我已经非常接近解决这个问题了。

到目前为止,有什么想法吗?

提前致谢。

笔记

  • 视图中的事实不会改变任何东西。Auth::check()
  • 使用另一种方法(如)并不能解决问题。Auth::guest()
  • 新增功能:连接到数据库的速度很慢。

答案 1

我终于找到了解决这个问题的方法。

当在许多论坛上阅读有关XAMPP,MySQL和PHP的一些帖子时,我在某处读到最好使用127.0.0.1,因为locahost需要额外的DNS查找。

在数据库配置文件中,我只是将locahost更改为127.0.0.1

现在一切都很快。

我觉得这真的很奇怪。在用于建立数据库连接的配置文件中使用locahost需要一秒钟以上的时间!


答案 2

我不同意哈莫的例子。在会话中拥有除其 ID 以外的任何用户信息都是一种安全风险,这就是大多数框架采用此路由的原因。除了查询用户记录之外,用户登录时是否还运行其他任何内容?这绝对不是说这会减慢您的应用程序的速度。


推荐