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