在webapp中生成pdf,xls,png文件的正确方法

我必须根据Web应用程序的input生成各种文件types(excel,pdf,png)的报告。 该应用程序是用PHP编写的一个Apachenetworking服务器。

ATM,当用户访问报告部分时,触发事件检查数据库中是否提交了新的数据,并基于该信息生成新的报告文件。 这使用户等待,直到文件生成(3-10秒),什么是不是一个好方法,所以我需要任何build议,你可以给我。

当然,这取决于你的应用程序和你的系统,但是我所做的一般是做一个执行PHP脚本的定时生成报告的cron作业。 输出可以保存到文件系统或数据库中。 这样,我的报告只会生成一次(而不是每次用户尝试下载它们),并且只在需要时才会生成报告(您的脚本可以根据您有任何更改条件来检查是否需要生成报告,或者您可以只需将其设置为定期生成全新的报告)。 为了保持简单,只需使用wget或curl调用当前网页,然后在Web服务器上创build一个新页面,以下载已保存的报表。

这种方法唯一的问题是用户可能会下载“陈旧”的报告(数据已经改变,但报告没有更新)。 如果这真的是一个问题,另一种方法是让后台运行的PHP脚本检查修改的数据并根据需要生成报告。

另一种方法是当用户尝试下载报告时,您可以继续生成报告,但可以caching结果。 再次使用您自己的特定于应用程序的标准,您可以检查caching的报告是否足以立即下载,或生成新报告并将其caching。 您甚至可以通过定期生成新报告来将其与第一种方法相结合,但是如果用户尝试下载过期的报告,立即生成新的报告(使用户等待3-10秒)。

最终取决于你的系统和你的应用程序。