应付款终版导入:分块读取工作簿,避免大文件把进程撑爆导致 500 #359
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/sumu-import-memory-fix"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
现象
生产上「供应商应付(终版)→ 货款对账」导入时浏览器只显示 500,服务器上没有任何异常日志。
原因
导入使用 PhpSpreadsheet 整表载入(
load()+toArray()),大文件或带巨大"幽灵区域"的工作簿会让 PHP 进程内存涨到 GB 级(实测 3 万行 xlsx 峰值 425MB 且仍在涨),进程被系统杀掉 → 空 500;同时线上 php.ini 里log_errors=Off,致命错误不会留下任何日志。改动
PayablesFinalImporter改为按 2000 行分块读取(只把当前块载入内存),读满 10,000 行立即抛出「请拆分文件」提示,不再走到崩溃;deploy/php.ini补上display_errors=Off/log_errors=On/error_log=storage/logs/php-errors.log,以后致命错误可查。验证
说明