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

Mar*_*ois 18 php laravel

注意:现在我知道问题的来源,我修改了问题.它现在只包含所需的信息.

我是Laravel PHP框架的新手.

我的计算机上有一个非常小的应用程序.它连接到MySQL数据库并具有用户模型.我使用Auth类登录和注销.

一切正常,但是当我登录时,加载页面大约需要一秒钟,这非常慢.当我没有登录时,这只是几毫秒.

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

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

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

新信息:即使我没有向数据库发送查询,连接到它的简单操作也需要几秒钟.这就是它变慢的原因.我想我已经非常接近解决问题了.

任何想法到目前为止?

提前致谢.

笔记

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

Mar*_*ois 35

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

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

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

现在一切都很快.

我发现这很奇怪.在用于建立数据库连接的配置文件中使用locahost需要一秒多的时间!

  • 如果系统设置正确,那么`localhost`应该没有dns查找,因为它应该在你系统的`hosts`文件中.我检查一下 - 这听起来像是一个不寻常的DNS设置的结果 (7认同)
  • 哇!惊人.在将"localhost"更改为"127.0.0.1"后,我正在开发的项目存在巨大差异.当数据库配置使用"localhost"时,加载页面的时间为1,092.40ms.现在,改变后,是58.36ms! (2认同)