问题描述
|
我有一个应用程序可以根据赛狗的比赛历史生成一系列统计信息。然后,此数组用于生成表,然后将其输出到浏览器。我目前正在创建一个函数,该函数将基于这些统计信息生成excel下载。但是,此excel下载仅在原始处理完成后才可用。让我解释。
用户单击种族名称
然后处理该种族的数据并将其显示在表格中。
表格下方是一个excel下载链接。
但是,这就是我遇到的问题。 excel下载存在于同一控制器内的另一种方法中,例如...
function view($race_id) {
//Process race data and place in $stats
//Output table & excel link
}
function view_excel($race_id) {
//Process race data <- I don\'t want it to have to process all over again!
//Output excel sheet
}
如您所见,数据已经通过\“ view \”方法进行了处理,因此,通过\“ view_excel \”方法再次进行处理似乎浪费了大量资源。
因此,当单击链接以防止必须复制时,我需要一种将$ stats转移到excel方法的方法。我能想到的唯一方法如下。
使用会话闪存将$ stats转移到excel方法
对于会话变量,该变量可能最终太大。另外,如果由于某些原因刷新了excel方法,则变量将丢失。
使用普通的会话变量将$ stats转移到excel方法
如上所述,对于会话变量,变量可能最终太大。这样的好处是它不会在页面刷新时丢失,但是我不确定如何销毁旧的会话变量,特别是如果用户在短时间内处理大量比赛时。
将$ stats存储在数据库中并以excel方法进行检索
这似乎是最可行的方法。但是,似乎只需要跨一个转移变量就可以了。另外,我将必须实施某种cron作业才能删除旧的数据库条目。
$ stats的示例:
Array
(
[1] => Array
(
[fcalc7] =>
[avgcalc7] =>
[avgcalc3] => 86.15
[sumpos7] =>
[sumpos3] => 9
[sumfin7] =>
[sumfin3] => 8
[total_wins] => 0
[percent_wins] => 0
[total_processed] => 4
[total_races] => 5
)
[2] => Array
(
[fcalc7] => 28.58
[avgcalc7] => 16.41
[avgcalc3] => 28.70
[sumpos7] => 18
[sumpos3] => 5
[sumfin7] => 23
[sumfin3] => 7
[total_wins] => 0
[percent_wins] => 0
[total_processed] => 7
[total_races] => 46
)
[3] => Array
(
[fcalc7] => 28.47
[avgcalc7] => 16.42
[avgcalc3] => 28.78
[sumpos7] => 28
[sumpos3] => 11
[sumfin7] => 21
[sumfin3] => 10
[total_wins] => 0
[percent_wins] => 0
[total_processed] => 7
[total_races] => 63
)
)
很高兴听到您的想法。
担
解决方法
您可以将数组序列化为sys_get_temp_dir()中具有数据相关文件名的文件。剩下的唯一问题是清理旧文件。
如您所说,也可以将其放入数据库中,如果您跟踪创建时间,则删除旧数据比在文件系统上更容易。