【问题标题】:Takes so much time to create PDF report花费大量时间创建 PDF 报告
【发布时间】:2012-05-25 03:42:31
【问题描述】:

我一直在使用 tcpdf 将我的数据导出为 pdf,第一次我收到一个错误说分配的内存不够,然后我使用 ini_set() 增加了内存大小。现在生成PDF文件大约需要5分钟,pdf文件包含19页数据。谁能建议我如何优化性能? 我可以使用 PDFCreator 之类的软件并在不导出文件的情况下打印报告吗?

【问题讨论】:

  • 可能需要看看你在做什么?处理大量图像 - 它们需要时间和内存?先尝试压缩图像。在这 19 页中有任何循环吗?如果您只是“回显”相同数量的数据而不是输入 PDF,是否需要更长的时间?
  • 数据不包含图像,当我只是回显数据时只需要大约 4 秒,但当我导出为 pdf 时需要近 5 分钟,
  • 相对于在 PDF 中打开另存为文件。这需要多长时间?那么打开PDF文件需要多长时间? (将确定问题所在)
  • 我用这个来保存文件,$pdf->Output('sandbox/pdf/example.pdf', 'F');但似乎和以前一样需要时间。
  • 下一个问题,你能不能把“echo LINE . time() . ' ';”在您的内容生成的各个部分,看看差距在哪里?看看是否有任何特定的函数调用比其他函数调用花费的时间更长?

标签: php tcpdf


【解决方案1】:

最佳做法

您查看过 TCPDF 网站上的performance best practices 吗?

您可以进行一些简单的优化,例如

  • 如果您不使用泰语,请编辑 config/tcpdf_config.php 文件并将 K_THAI_TOPCHARS 常量设置为 false;
  • 默认情况下,TCPDF 启用字体子集以减小嵌入的 Unicode TTF 字体的大小,此过程非常缓慢且需要大量内存,可以使用 setFontSubsetting(false) 方法关闭;
  • 尽可能使用核心字体而不是嵌入字体;

分析

在 PHP 中分析性能问题(称为Profiling)的一种非常彻底的方法是使用 xdebug。它将记录您所有的函数调用及其花费的时间。然后可以可视化这些日志文件。我推荐 Webgrind 作为这个接口,here's how to get started

这是设置它并学习如何理解数据的初步努力,但它是性能优化的宝贵工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2022-10-23
    • 2018-01-10
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多