我正在使用DOMPDF从一个脚本中生成大约500个报告。在生成大约10-15个PDF后,它会耗尽内存。
调试时发现,每次到字体加载部分时,它似乎会加载8M,但这似乎应该由字体缓存代码处理。
有什么想法出了问题吗?我想发布一个简单的代码片段,但大部分都被抽象成多层,所以不是一个简单的复制/粘贴。
调试时发现,每次到字体加载部分时,它似乎会加载8M,但这似乎应该由字体缓存代码处理。
有什么想法出了问题吗?我想发布一个简单的代码片段,但大部分都被抽象成多层,所以不是一个简单的复制/粘贴。
首先,如果这是用于商业用途,请使用Prince XML。它比任何其他HTML转PDF解决方案都要好得多且更快(我已经看过所有的解决方案)。成本将很快通过节省开发人员时间而收回。
其次,最快的解决方案可能是在单独的进程中打印每个报告以解决任何内存泄漏问题。如果这是从命令行运行,请将外部循环设置为类似于shell脚本的东西,以启动每个报告的进程。如果它是从Web运行的,并且您正在使用可以执行此操作的操作系统,则为每个脚本分配一个进程。
根据cletus的说法,使用DOMPDF最快的解决方案可能是在单独的进程中渲染每个报告。您可以编写一个主脚本,调用一个子脚本(使用exec),该子脚本执行实际的渲染。正如您在DOMPDF支持小组的讨论中所看到的那样,它似乎有潜力提高性能。
否则很难说内存使用情况,除非有一些演示问题的示例。我不认为DOMPDF和底层CPDF渲染引擎针对单个脚本中的多个实例进行了太多优化。因此,即使它可以使用静态变量缓存数据,字体也可能每次都被加载到内存中。