У меня есть приложение, которое генерирует массив статистики, основанной на истории гонок борзых.Этот массив затем используется для генерации таблицы, которая затем выводится в браузер.В настоящее время я работаю над созданием функции, которая будет генерировать загрузки 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_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
)
)
Было бы здорово услышать ваши идеи.
Дан