ThinkPHP事件调试:我用console.log断点法的翻车实录
最近在折腾TP6的事件系统,本以为console.log这种前端调试法移植过来能事半功倍,结果在中间件里疯狂输出时直接引发headers already sent错误。记录下血泪教训:事件调试千万别学前端无脑console,这几个替代方案更靠谱:
1. 日志写入法:在事件触发时用Log::record()写到runtime/log,配合tail -f实时监控。记得关闭buffer防止日志延迟,这个坑我蹲了半宿才反应过来
2. Xdebug远程调试:配好PHPSTORM的监听后,在事件类里打上断点,触发时能直接看到完整的调用栈和变量值。首次配置会有点折腾,但绝对值得
3. 临时文件标记法:在关键节点file_put_contents('/tmp/debug.txt'),配合inotifywait监控文件变化。特别适合生产环境调试,事后记得删监控脚本
现在想想当初在__destruct里写echo的行为简直蠢爆,不仅破坏响应头,还可能导致ajax接口直接挂掉。各位还有什么骚操作欢迎补充,让我也开开眼~
最新打赏

