Передача (довольно) большого количества данных за одну загрузку страницы - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть приложение, которое генерирует массив статистики, основанной на истории гонок борзых.Этот массив затем используется для генерации таблицы, которая затем выводится в браузер.В настоящее время я работаю над созданием функции, которая будет генерировать загрузки Excel на основе этой статистики.Однако эта загрузка Excel будет доступна только после завершения исходной обработки.Позвольте мне объяснить.

  1. Пользователь нажимает на название расы
  2. Затем данные для этой расы обрабатываются и отображаются в таблице.
  3. Под таблицей находитсяссылка для загрузки в формате 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
        )
)

Было бы здорово услышать ваши идеи.

Дан

1 Ответ

0 голосов
/ 13 апреля 2011

Вы можете сериализовать массив в файл в sys_get_temp_dir () с именем файла, зависящего от данных.Единственная оставшаяся проблема - очистка старых файлов.

Поместить их в базу данных также можно, как вы сказали, и удалить старые данные проще, чем в файловой системе, если вы отслеживаете время создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...