从用户导出一堆PDF的有效方法?

时间:2015-06-14 12:40:06

标签: php pdf cron wkhtmltopdf

我需要让用户能够导出一堆PDF(发票)。
问题是,每次用户打开PDF时都会生成PDF。
所以我没有将它们存储在文件系统中。

所以,我的问题是,在他们想要的时候,导出用户PDF的有效方法是什么?

例如,用户想要从上一季度导出100张发票。 我然后需要调用生成PDF的脚本并将它们放在.zip文件中。
,如果多个用户同时请求大量导出会怎么样?

我在考虑每10分钟左右运行一次cronjob,但这并不能解决脚本可能造成的严重问题。

我是否需要运行多个cronjobs,这样他们每个人都可以处理一部分导出?

或者我可以以某种方式创建一个非常有效的脚本,并且可以分几批分离所有PDF?

我正在使用wkhtmltopdf来生成PDF。
幸运的是,渲染PDF的速度非常快。
当然,它仍然取决于内容。
平均而言,单个PDF需要3-5秒才能渲染。

非常感谢任何帮助或指导!
感谢

后续问题:如果我将每张发票保存到文件系统中,一旦创建或更新,我需要找到一种在后台执行此操作的方法,以避免不必要的等待。
队列将是我的救世主,对吗?

1 个答案:

答案 0 :(得分:3)

在发票保存到数据库中时生成发票,并将filesystem-URL与数据库条目一起存储。如果用户请求特定时间段的发票包,请将已生成的PDF收集到zip文件中并提供下载链接。 要求是服务器上文件存储的足够空间。

您可以将发票存储限制为一年。如果用户请求较旧的发票,则必须生成otf。

后续答复: 由于你在PHP环境中,我建议实现某种invoiceChanged处理程序。如果您调用它(使用参数invoiceNr),则不推荐使用已弃用的PDF文件,并根据修改后的数据生成新文件。如果它使用相同的文件名,您甚至不必更新数据库中的文件URL。