簡體   English   中英

連接到數據庫時,Laravel應用程序非常慢

[英]Laravel application very slow when connecting to the database

注意:現在我知道問題的來源,我修改了問題。 它現在只包含所需的信息。

我是Laravel PHP框架的新手。

我的計算機上有一個非常小的應用程序。 它連接到MySQL數據庫並具有用戶模型。 我使用Auth類登錄和注銷。

一切正常,但是當我登錄時,加載頁面大約需要一秒鍾,這非常慢。 當我沒有登錄時,這只是幾毫秒。

通過使用內置的分析器,我意識到了兩個問題。 首先,就像我說的,加載頁面需要超過1000毫秒。 其次,每次我登錄時,框架都會生成一個SQL。查詢會搜索具有特定ID(我的id)的用戶。 我想這是獲取有關登錄用戶的信息。 但是不應該有某種緩存。 如果我的網站每秒必須管理很多請求,這會成為一個問題。

我意識到在視圖中使用Auth::check()是導致問題的原因。 我有4個Auth::check()是我的Blade視圖。 當我沒有時,它會很快。 如果我有一個,它很慢。 然后,無論我有多少,它都不會慢得多。 這就像Auth類的初始化需要花費太多時間或類似的東西。 我想它解釋了為什么它只在我登錄時發生。

我潛入了Laravel的代碼,我發現當第一次調用Auth::check()時,Auth類需要通過從數據庫中檢索用戶的信息來“激活”我的Session。 這解釋了每個頁面請求正在執行的查詢。 但是,由於分析器說查詢甚至不需要一毫秒來執行,我仍然不知道為什么它會減慢應用程序的速度。

新信息:即使我沒有向數據庫發送查詢,連接到它的簡單操作也需要幾秒鍾。 這就是它變慢的原因。 我想我已經非常接近解決問題了。

任何想法到目前為止?

提前致謝。

筆記

  • Auth::check()在視圖中的事實不會改變任何東西。
  • 使用Auth::guest()等其他方法無法解決問題。
  • 新增功能:連接到數據庫的速度很慢。

我終於找到了解決這個問題的方法。

在許多論壇上閱讀有關XAMPP,MySQL和PHP的一些帖子時,我在某處讀到了最好使用127.0.0.1,因為locahost需要額外的DNS查找。

在數據庫配置文件中,我只是將locahost更改為127.0.0.1

現在一切都很快。

我發現這很奇怪。 在用於建立數據庫連接的配置文件中使用locahost需要一秒多的時間!

我不同意哈莫的例子。 在會話中擁有除ID以外的任何用戶信息都存在安全風險,這就是大多數框架采用此路由的原因。 除了查詢記錄之外,還有其他什么在用戶登錄時運行嗎? 絕對不是那會降低您的應用程序速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM