保存一次商品却持续触发catalog_product_save_after,最终超时或内存耗尽。通常是Observer内部再次调用save造成递归。
解决记录
步骤1:从异常堆栈和临时计数日志确认同一SKU、同一请求重复进入哪个Observer或Plugin。
步骤2:Observer中不要再次执行$product->save();只改当前对象可在合适的before事件设置数据,跨实体写入改用Repository并加边界。
步骤3:确需二次更新时使用请求级guard并比较旧新值,只在值真正变化时执行;guard不能掩盖无限业务循环。
步骤4:检查aroundSave必须且只能调用一次proceed,修复后移除临时日志并重新编译。
命令与数据检查
rg -n 'catalog_product_save_|aroundSave|->save(' app/code# 临时记录sku、事件名与debug_backtrace摘要bin/magento setup:di:compile
上线前验收
单次保存只进入预期次数,CLI导入和后台保存都能完成,索引与扩展字段仍正确更新。

