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