我必须根据Web应用程序的输入生成一些各种文件类型的报告(excel,pdf,png)。该应用程序是用PHP在Apache网络服务器上编写的。
ATM,当用户访问报告部分时,他们触发事件,检查数据库中是否有提交的新数据,并根据该信息生成新的报告文件。这使用户等到文件生成(3-10秒),这根本不是一个好方法,所以我需要你给我的任何建议。
答案 0 :(得分:2)
当然这取决于你的应用程序和你的系统,但我通常做的是我有一个执行PHP脚本的cron作业来定期生成报告。输出可以保存到文件系统或数据库中。这样我的报告只生成一次(而不是每次用户尝试下载它们)并且只在需要时生成它们(您的脚本可以检查是否需要根据您拥有的任何更改条件生成报告,或者您可以只需将其设置为定期生成全新报告)。为了保持简单,只需使用wget或curl调用当前网页,然后在网络服务器上创建一个新页面以下载已保存的报告。
此方法的唯一问题是用户可能会下载“陈旧”报告(数据已更改但报告尚未更新)。如果这确实是一个问题,另一种方法是在后台运行PHP脚本,检查修改后的数据并根据需要生成报告。
另一种方法是,您可以在用户尝试下载报告时继续生成报告,但会缓存结果。再次使用您自己的特定于应用程序的标准,您将检查缓存的报告是否足以立即下载,或生成新报告并对其进行缓存。您甚至可以通过定期生成新报告将其与第一种方法相结合,但如果用户尝试下载过时的报告,则会立即生成一个新报告(使用户等待3-10秒)。
最终取决于您的系统和应用程序。