phpexcel内存不能手动释放

a6965921

问题描述

这样写 webman框架里内存不能释放
我现在用
posix_kill(posix_getppid(), SIGUSR1);
来释放内存
还有其他方法吗

程序代码或配置

  $inputFileName = '/public/upload/files/20250307/67ca6427f1a7.xlsx';

        $reader = IOFactory::createReaderForFile($inputFileName);
        $reader->setReadDataOnly(true); // 仅读取数据,而不解析格式
        // 加载文件
        $spreadsheet = $reader->load($inputFileName);
        // 选择第一个工作表
        $worksheet = $spreadsheet->getActiveSheet();

        unset($reader, $spreadsheet, $worksheet);

        // 手动触发垃圾回收机制
        gc_mem_caches();
216 1 0
1个回答

walkor 打赏

不确认你是怎么判断内存不释放的?

php会自己的内存申请释放机制,为了性能php可能有时候保留一些内存不释放,以便下次使用,是正常现象。
一般只要内存不是无限增长就没问题。
除非phpexcel自身有内存泄漏,使用过程中内存无限增大才需要处理,这个需要phpexcel修复,webman无法控制。
不过即使phpexcel或者业务产生了内存泄漏,webman有监控内存的逻辑,内存超过一定限制会平滑重启对应进程,对业务基本0影响。

  • 暂无评论
×
🔝