我现在遇到的一大瓶颈是每次有人下订单时生成PDF。对于单个订单来说这不是什么大问题,但是如果在很短的时间内有很多,那么这个过程非常缓慢。
PDF需要文本信息,QR码,条形码,徽标以及1个或更多(最多20个)1/4宽度的图像。
当前流程w / DOMPDF:
新思路:
理论上它会照顾QR和条形码图像,但是,其余的图像使它太慢。
这样做,没有(QR和条形码)以外的任何图像,PDF可以在~500ms内生成,但是一旦我开始添加图像,它就会上升到2,3,4,5 +每个秒。
当运行测试并处理~10k订单(几分钟内)时,它仍然在12小时后处理PDF,直到我沮丧地关闭它。
PDF是在一个单独的队列流程中生成的,所以此人在订购时不必等待,但是 - 仍然......他们需要5个多小时才能收到他们的确认PDF在高流量时。
问题/ TLDR:
如何使用动态qr代码,动态条形码,动态文本和1-20静态图像(所有PDF中的图像相同)创建PDF的过程更快?
我还有其他潜在的想法吗?也许制作一个模板PDF并以某种方式使用PHP来填充动态点?
答案 0 :(得分:4)
我强烈建议您使用TCPDF库。它非常快,可以很容易地集成到CakePHP中。您可以在TCPDF示例page中找到很多关于如何将图像,条形码和QR码包含到PDF中的示例。
要进一步改善效果,请使用this页面的提示:
如果这不能将性能提高到可接受的水平,您可以在具有更多可用资源的第二台服务器上安装CakePHP应用程序(或者只运行生成PDF的脚本,如果它不使用CakePHP)仅将该服务器用于PDF生成。
答案 1 :(得分:1)
如果您不需要透明度,可以尝试使用JPEG而不是PNG文件。
例如,在TCPDF中,我必须生成一个背景为大的PNG(18cm x 18cm,300dpi)的PDF。在生成文件之前,我不得不等待11秒。 我用相同大小和DPI的JPEG替换了图像,花了不到1秒钟。
答案 2 :(得分:0)
TCPDF图像也很慢