选择 CSV 后点击“检查数据”或“导入”,后台遮罩一直显示 Please wait...,管理员不知道任务是否开始。此时不要重复点击。一次导入若已经到达服务端,第二次请求可能并发写同一批 SKU,让锁等待和重复处理更加严重。
Network 先回答有没有发出请求
打开浏览器开发者工具,查看导入按钮触发的 POST。没有请求,检查 Console、form key 与管理后台 JS;请求返回 413,说明 Web server 限制上传体积;返回 504,说明代理等待超时;返回 200 但响应不是预期 JSON,常见于 PHP warning 或登录页被当作结果。
确认上传文件真的进入服务器
检查 PHP 的 upload_max_filesize、post_max_size、临时目录权限和磁盘空间。post_max_size 小于文件时,PHP 可能收到空表单,表现不一定是清晰的“文件过大”。Nginx/Apache 与 CDN 也有各自限制,要看最小的一层。
php -i | egrep 'upload_max_filesize|post_max_size|max_execution_time|memory_limit'
df -h
df -i
CLI 的 php.ini 可能与 PHP-FPM 不同,命令输出只能作为线索,应从实际 FPM pool 或 phpinfo 的受控页面确认。
校验和正式导入是两步
Magento 先分析列、行为、错误阈值和样本数据,再执行写入。大文件在校验阶段就可能读取大量属性和 SKU。检查 var/log/system.log、exception.log、PHP-FPM 与 Web server error log,按点击时间对齐,而不是只搜“import”。
异步导入要看消费者
若站点启用了异步批量处理,后台请求可能只是创建任务,真正执行依赖消息队列 consumer。查看消费者、队列积压与 Cron,不要因为页面遮罩还在就认为 PHP 一直处理。
bin/magento queue:consumers:list
bin/magento queue:consumers:start async.operations.all --max-messages=100
bin/magento cron:run
示例中的消费者名称要以当前安装版本和模块列表为准。生产环境启动常驻 consumer 应由 supervisor/systemd 管理,不要在 SSH 会话里无限运行。
用小文件切分问题
保留相同列头,只放一个已知 SKU 测试。小文件成功、大文件失败,重点查资源与数据规模;小文件也失败,重点查字段映射、权限和代码异常。按实体 ID 或 SKU 稳定分批,记录每批结果,避免用随机拆分导致难以重跑。
恢复后检查几条商品的 EAV 值、网站分配、库存和索引,不要只相信“导入完成”提示。若页面仍不关闭遮罩但后台数据已写入,则要单独修复前端响应处理;业务已经执行与界面是否结束是两个问题。

