久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      淺析Laravel 中怎么找到最慢的查詢

      你的網(wǎng)站慢嗎?加載需要很長(zhǎng)時(shí)間嗎?用戶是否抱怨它幾乎 無(wú)法使用 ?您應(yīng)該檢查您的數(shù)據(jù)庫(kù)查詢。我將向您展示一種輕松分析所有數(shù)據(jù)庫(kù)查詢的簡(jiǎn)潔方法。

      淺析Laravel 中怎么找到最慢的查詢

      Laravel 9 保姆級(jí)視頻教程,想學(xué)不會(huì)都難!進(jìn)入學(xué)習(xí)

      當(dāng)然,您的網(wǎng)站速度慢的原因有很多,但最常見(jiàn)的原因之一是數(shù)據(jù)庫(kù)查詢速度慢。

      但是在 laravel 中,我們(大多數(shù)時(shí)候)不使用 SQL 從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),我們使用 Eloquent ORM 和 查詢構(gòu)建器 ,這有時(shí)會(huì)導(dǎo)致很難查明造成我們網(wǎng)站如此緩慢的查詢。

      DB::listen()

      幸運(yùn)的是,在 laravel 中,我們可以定義一個(gè)在每次執(zhí)行查詢時(shí)調(diào)用的回調(diào)(參見(jiàn) 此處)。為此,請(qǐng)將以下代碼添加到任何服務(wù)提供者(例如 AppServiceProvider):

      public function boot() {     DB::listen(function ($query) {     // TODO: make this useful     }); }

      如您所見(jiàn),我們接收了一個(gè)變量 $query,這個(gè)變量是 QueryExecuted 類的一個(gè)實(shí)例。這意味著我們可以訪問(wèn)有關(guān)已執(zhí)行查詢的一些信息:

       DB::listen(function ($query) {      $query->sql; // 執(zhí)行的 sql 字符串      $query->bindings; // 傳遞給sql查詢的參數(shù)(這將替換sql字符串中的 "?")      $query->time; // 執(zhí)行查詢所用的時(shí)間;  });

      這是非常有用的信息,現(xiàn)在我們可以通過(guò)查看 $query->time 屬性來(lái)識(shí)別慢查詢。 但這并沒(méi)有告訴我們?cè)谖覀兊拇a中查詢執(zhí)行的位置

      我怎么知道查詢是在哪里執(zhí)行的?

      即使該 $query 變量沒(méi)有給我們?nèi)魏侮P(guān)于其來(lái)源的信息, 我們?nèi)匀豢梢允褂?PHP 內(nèi)置函數(shù) debug_backtrace() 獲取該信息。

      DB::listen(function ($query) {     dd(debug_backtrace()); });

      如果你在你的項(xiàng)目上運(yùn)行它,你會(huì)在瀏覽器上看到類似這樣的東西:

      array:63 [▼   0 => array:7 [▼  "file"=>"/home/cosme/Documents/projects/cosme.dev/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php"     "line" => 404     "function" => "AppProviders{closure}"     "class" => "AppProvidersAppServiceProvider"     "object" => AppProvidersAppServiceProvider {#140 ▶}     "type" => "->"     "args" => array:1 [▶]   ]   1 => array:7 [▼     "file" => "/home/cosme/Documents/projects/cosme.dev/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php"     "line" => 249     "function" => "IlluminateEvents{closure}"     "class" => "IlluminateEventsDispatcher"     "object" => IlluminateEventsDispatcher {#27 ▶}     "type" => "->"     "args" => array:2 [▶]   ]   2 => array:7 [▼     "file" => "/home/cosme/Documents/projects/cosme.dev/vendor/laravel/framework/src/Illuminate/Database/Connection.php"     "line" => 887     "function" => "dispatch"     "class" => "IlluminateEventsDispatcher"     "object" => IlluminateEventsDispatcher {#27 ▶}     "type" => "->"     "args" => array:1 [▶]   ]   ....

      這是一個(gè)數(shù)組,其中包含請(qǐng)求中到目前為止的每個(gè)函數(shù)調(diào)用。我將只關(guān)注每個(gè)數(shù)組中的 fileline 鍵。

      如果你仔細(xì)看,你會(huì)發(fā)現(xiàn)在我的例子中有 63 個(gè)函數(shù)調(diào)用,這是一個(gè)簡(jiǎn)單的應(yīng)用程序,如果在更復(fù)雜的應(yīng)用程序中,可能會(huì)

      贊(1)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)