sql 語句網路除錯和 sql 語句低層傳輸檢視

勺顛顛發表於2020-05-19

平常你們怎麼列印sql語句的?

在框架中使用框架提供的騷方法列印,或是直接echo/print,在本地開發或是在測試機上開發這樣好像可以,粗暴又騷,可是在公司的生產線上呢?你直接修改生產線上的程式碼直接列印?哦,搞個日誌或是生成檔案,但是你還是還要動程式碼!!!我就不想動人家的程式碼,動人家的東西是不禮貌的!!!要是動壞了,你就就回家了^_^

你的方法可能如下

  • 程式碼中除錯echo/print/框架提供的方法寫大堆
  • 裝一堆工具
  • 寫一堆程式碼
  • git上找一堆工具或是百度找一堆工具安裝大半天
  • 群裡問人家怎麼檢視sql語句啊,人家不回答就說人家小氣,說人家不關心他,不幫他^_^。

如果你接手人家的專案,你也動人家的伺服器,你也動人家的程式碼,有可能動壞了。下面是我工作中經常除錯程式碼的一些小騷法,當然此法可舉一反三用在許多場景中,比如檢視程式執行情況,檢視swoole執行情況,檢視框架執行情況,檢視資料庫執行等。

除錯環境如下

  • centos8【不會使用windows伺服器,也不喜歡,除錯難度跟原子彈一樣難,不推薦!】

  • php7

  • swoole4.x

  • mysql8
    我們藉助強大的strace工具【不清楚的具體百度】
    測試原始碼 //直接複製swoole示例原始碼
    假設你用別人基於swoole擼的騷框架【我直接複製swoole example下的東西了,反正道理都一樣】

    $key_dir = dirname(dirname(__DIR__)) . '/tests/ssl';
    $http = new swoole_http_server("0.0.0.0", 9501);
    $http->set([
    'worker_num' => 1,
    ]);
    $http->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);
    $http->on('request', function ($req, $resp) {
      $uri = $req->server['request_uri'];
    
      $swoole_mysql = new Swoole\Coroutine\MySQL();
      $swoole_mysql->connect([
          'host' => '127.0.0.1',
          'port' => 3306,
          'user' => 'root',
          'password' => 'pwd',
          'database' => 'test',
      ]);
      $res = $swoole_mysql->query('select * from user');
      $resp->write(josn_encode($res));
    });
    $http->on('finish', function ()
    {
      echo "task finish";
    });
    $http->on('task', function ()
    {
      echo "async task\n";
    });
    $http->on('close', function(){
      echo "on close\n";
    });
    $http->on('workerStart', function ($serv, $id)
    {
      //var_dump($serv);
    });
    $http->start();

    響應結果

sql語句網路除錯
swoole服務程式關係
sql語句網路除錯
8475:

sql語句網路除錯
8476

sql語句網路除錯

mysql8程式關係
sql語句網路除錯
mysql程式接受sql語句

sql語句網路除錯

sql 語句網路除錯

sql 語句網路除錯
長語句測試和錯誤返回
sql 語句網路除錯

超長sql語句測試【可以指定引數長度的】
sql 語句網路除錯
sql 語句網路除錯
worker程式接受瀏覽器請求+連線資料庫+響應請求+關閉資料庫的過程

sql 語句網路除錯

sql 語句網路除錯

其它方法

tcpdump工具

sql 語句網路除錯
開啟sql日誌除錯功能

sql 語句網路除錯

sql 語句網路除錯

本作品採用《CC 協議》,轉載必須註明作者和本文連結

只會php crud的渣渣

相關文章