我有带 TWIG 模板引擎的 Symfony 框架。我正在制作 1000 页的 pdf
<dynamic-page>...content in for-loop...</dynamic-page>`
然而,当使用 ps_facade
写入磁盘时,它给我内存耗尽的 fatal error 。那么,有什么方法可以以 5 页为单位创建此 pdf 吗?
经过研究,我发现使用包含 5 页数据的模板,然后将其写入文件应该可行。但那样我将无法添加页码,因为页码应该是 1-1000。我的页脚代码如下所示,
<placeholders>
<footer>
<div height="30px" width="100%">
<hr/>
<div float="left">Blah Blah</div>
<div float="left" margin-left="350px"><page-info format="Page %s of %s"></div>
</div>
</footer>
</placeholders>
最佳答案
您应该为 long processes like this 使用消息系统. RabbitMQ 可以胜任这项工作。
- 您的用户请求 pdf
- 您立即告诉他他的请求已被考虑在内,工作完成后他会收到一封电子邮件,或者他可以稍后回来
- 消费者看到该工作,并启动 pdf 生成(不必在 php 中)。
优点: 由于进程不是web版php运行的,所以没有memory_limit和max_execution时间限制 如果作业已经在运行,您可以告诉您的用户,而不是为同一个 pdf 启动另一代。由于人们在不耐烦时经常刷新页面,这对您的服务器来说确实是一个巨大的优势(更少的 CPU 使用率)。
缺点: 您必须设置一个消息传递服务器并学习一些东西。但这真的是一个骗局吗?
关于php - 在 Symfony 中,有没有办法一次创建 pdf 文件页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12790414/