时间: 2025年06月04日 20:57
任务: 编写一个错误复现的命令(Console)
根据用户需求,需要创建一个 Console 命令来复现错误请求:
创建了 app/Console/Commands/ReproduceErrorCommand.php 命令类,继承自 Laravel 的 Command 基类。
protected $signature = 'debug:reproduce-error
{identifier : 请求标识符(可以是id、request_unid或run_unid)}
{--type=auto : 标识符类型(id|request_unid|run_unid|auto),auto为自动检测}
{--timeout=30 : 请求超时时间(秒)}';
id、request_unid、run_unid 三种方式查找# 通过 ID 复现请求
php artisan debug:reproduce-error 68973973
# 通过 request_unid 复现请求
php artisan debug:reproduce-error 6840202392627
# 指定标识符类型
php artisan debug:reproduce-error 68973973 --type=id
# 设置超时时间
php artisan debug:reproduce-error 68973973 --timeout=60
开始查找请求记录...
标识符: 68973973
类型: auto
找到请求记录:
ID: 68973973
Request UNID: 6840202392627
Run UNID:
路径: gameapi
方法: POST
创建时间: 2025-06-04 18:29:55
提取到 token: f4b3c51a58...
目标地址: http://kku_laravel.local.gd/
开始发起请求...
请求完成,响应结果:
状态码: 200
响应头:
Server: nginx/1.27.4
Date: Wed, 04 Jun 2025 12:59:52 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/8.3.21
Cache-Control: no-cache, private
Vary: Origin
响应内容:
{"runUnid":"68404347a6a07","runMs":"6","code":"OK","callpath":"Shop-Query","lastData":[],"shopQuery":{"lastTimes":"1748943300"}}
php artisan debug:reproduce-error --help
命令成功注册,帮助信息正常显示。
app/Console/Commands/ReproduceErrorCommand.php - 主命令类app/Console/Commands/README_ReproduceError.md - 详细使用文档UCore/Model/RequestLog.php - 请求日志模型tests/Unit/ProtoJsonRequestTest.php - 参考的测试类app/Console/Kernel.php - 命令自动加载配置成功实现了错误复现命令,完全满足用户需求:
该命令将极大提升开发者调试效率,特别是在排查线上问题时能够快速复现错误场景。