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

Efficient way of exporting a bunch of PDF's from a user?

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

所以,我的问题是,当用户需要时,导出 PDF 的有效方式是什么?

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

我想 运行每 10 分钟左右执行一次 cronjob,但这并不能解决脚本可能的繁重问题。

我是否需要 运行 多个 cronjobs,以便它们每个都能处理一部分导出?

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

我正在使用 wkhtmltopdf 生成 PDF。
幸运的是,PDF 的渲染速度非常快。
当然还是要看内容。
平均而言,渲染单个 PDF 大约需要 3-5 秒。

如有任何帮助或指南,我们将不胜感激!
谢谢


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

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

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


后续回答: 由于您处于 PHP 环境中,我建议实施某种 invoiceChanged 处理程序。如果调用它(使用参数 invoiceNr),已弃用的 PDF 文件将被删除,并根据修改后的数据生成一个新文件。如果它使用相同的文件名,您甚至不必更新数据库中的文件-URL。