高逼格的 sql 语句调试会学会了吗

平常你们怎么打印sql语句的?

在框架中使用框架提供的骚方法打印,或是直接echo/print,在本地开发或是在测试机上开发这样好像可以,粗暴又骚,可是在公司的生产线上呢?你直接修改生产线上的代码直接打印?哦,搞个日志或是生成文件,但是你还是还要动代码!!!我就不想动人家的代码,动人家的东西是不礼貌的!!!要是动坏了,你就就回家了^_^

你的方法可能如下

  • 代码中调试echo/print/框架提供的方法写大堆
  • 装一堆工具
  • 写一堆代码
  • git上找一堆工具或是百度找一堆工具安装大半天
  • 群里问人家怎么查看sql语句啊,人家不回答就说人家小气,说人家不关心他,不帮他^_^。

调试环境如下

  • 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的渣渣

勺颠颠
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 11

居然有这种操作

5天前 评论

没有图形化的吗?真的痛苦。

5天前 评论
勺颠颠

@admin0 图形界面没有必要

5天前 评论

为了一个语句弄一堆,直难为我了。要不要弄得这么复杂

4天前 评论
mmmm 3天前
yangjisen (作者) 3天前

调试SQL都要用到strace,太高端了

4天前 评论
勺颠颠

@yangjisen 这个不复杂,简单又方便,要说复杂php开发谈不上复杂。

4天前 评论
Epona

我 选择用 Telescope ,哈哈哈

3天前 评论
勺颠颠

@Epona :joy:

2天前 评论
勺颠颠

@mmmm :kissing_heart: :kissing_heart:

1天前 评论
yangweijie

socketlog 插件

5小时前 评论
勺颠颠

@yangweijie 我不想安装任何工具,不想安装任何插件,因为好麻烦,我懒 :smirk:

5小时前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!