PHP:从会话变量下载文件


PHP: Downloading file from session variable

我有一个报告和统计应用程序,它以基本的表格格式显示各种查询结果。在报告结果页面的底部有一个选项,用户可以将他们正在查看的报告结果下载到CSV文件中。与网上银行类似的功能,您可以查看您的银行交易,然后选择将交易历史下载到csv。

这样做的最佳实践方法是什么?

。一个下载按钮,触发重新运行报告查询,并随后流式传输到csv下载文件。

b。当第一次运行查询并在视图中呈现时,控制器将报告对象保存在会话变量中。因此,下载按钮将从会话变量下载到报告对象,而不必重新运行查询。

我认为选项B的好处是双重的。1. 报表查询不必重新运行,从而减少了数据库的负载。2. 从会话变量中下载的报告与报告结果中显示的报告完全匹配。使用选项a,如果在查看报告的时间和触发下载链接的时间之间有数据更新,则下载的报告可能与正在查看的报告不同。

如果使用会话变量方法,是否存在我应该考虑的任何风险或缺点?

提前感谢您的输入和指导。

您很好地总结了需要考虑的问题。最终,你将不得不做出取舍。但是,请注意,您不能在$_SESSION中存储诸如MySQL结果之类的资源(我不确定您引用的"报告对象"是否是自编写报告类的实际对象,或者您是否引用了从数据库获得的查询结果)。我个人更喜欢选项B,因为它保证不会提供与应用程序中可见的结果不同的结果。