国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用laravel db,listen,出現(xiàn)的情況

evilk

1.環(huán)境情況

2.代碼情況
controller:

中間件:

3.情況描述

  • 第一次請(qǐng)求

  • 第二次請(qǐng)求

  • 第三次請(qǐng)求

  • 第四次請(qǐng)求

問(wèn)題:
感覺(jué)就是

\Illuminate\Database\Events\QueryExecuted $query

會(huì)記錄當(dāng)前連接的所有SQL,因?yàn)楫?dāng)前進(jìn)程的MySQL鏈接不會(huì)斷開(kāi),每次打印SQL,會(huì)把之前所有請(qǐng)求的SQL都打印出來(lái)
如果想只打印當(dāng)前請(qǐng)求的SQL,應(yīng)該如何處理?

文檔中ARMS監(jiān)控,也有這樣的代碼
不知道是否也會(huì)出現(xiàn)類(lèi)似的問(wèn)題

3104 1 0
1個(gè)回答

walkor 打賞

因?yàn)槊看握?qǐng)求都執(zhí)行中間件,都會(huì)加一個(gè)監(jiān)聽(tīng),所以就會(huì)有重復(fù)的監(jiān)聽(tīng),會(huì)重復(fù)打印。
這個(gè)監(jiān)聽(tīng)不適合放在中間件,適合放在進(jìn)程啟動(dòng)項(xiàng)。

新建 app/bootstrap/Report.php(目錄不存在時(shí)自行創(chuàng)建)

<?php
namespace app\bootstrap;
use Webman\Bootstrap;
use support\Db;

class Report implements Bootstrap
{
    public static function start($worker)
    {
        Db::listen(function(\Illuminate\Database\Events\QueryExecuted $query) {
           echo $query->sql. "\n";
        });
    }
}

打開(kāi) config/bootstrap.php 添加如下配置
<?php

return [
    // ... 這里省略其它配置 ...
    app\bootstrap\Report::class,
];

以上兩步就完成了進(jìn)程啟動(dòng)時(shí)設(shè)置SQL監(jiān)聽(tīng)。

  • evilk 2021-12-27

    非常感謝,那文檔中ARMS部分中,在中間件添加的那段監(jiān)聽(tīng),是不是也需要放到進(jìn)程啟動(dòng)時(shí)?

  • walkor 2021-12-27

    那個(gè)有做判斷,只會(huì)初始化一次

  • badman 2022-01-14

    我按你的代碼設(shè)置,在homestead環(huán)境php8.0下,監(jiān)聽(tīng)不成功。

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??