在Symfony中,有没有办法一次创建pdf文件页面?

时间:2012-10-08 22:33:32

标签: php symfony pdf-generation twig

我有带有TWIG模板引擎的Symfony框架。我在

中制作了1000页的pdf
<dynamic-page>...content in for-loop...</dynamic-page>`

然而,当使用ps_facade写入磁盘时,它会给我内存耗尽致命错误。那么有什么方法可以创建这个pdf 5页大块?

经过研究,我发现使用具有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>

1 个答案:

答案 0 :(得分:2)

您应该使用long processes like this的消息传递系统。 RabbitMQ可以完成这项工作。

  1. 您的用户请求pdf
  2. 你立刻告诉他,他的请求已被考虑在内,并且他会在工作完成时收到一封电子邮件,或者他可以稍后再回来
  3. 消费者看到了这个工作,并启动了pdf生成(不一定是在php中)。
  4. 优点: 由于该过程不是由web版本的php运行,因此它没有memory_limit和max_execution时间限制 如果作业已在运行,您可以告诉您的用户,而不是为同一个pdf启动另一代。由于人们经常在不耐烦的情况下刷新页面,这对于您的服务器来说真的是一个巨大的专业版(CPU使用率更低)。

    缺点: 你必须设置一个消息服务器并学习一些东西。但这真的是一个Con?