保存一次商品却持续触发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导入和后台保存都能完成,索引与扩展字段仍正确更新。