2015-09-15 2 views
0

В PHP, делает array_slice() служить достаточно для обработки больших объемов данных array, которые не могут быть paginated, так как его не хранятся в database, но рассчитана на других db tables.array_slice() для большого массива, хорошо или плохо

В любом случае, у меня есть array около 50k, который может увеличить позже. Первый раз на странице загрузить его извлекает все 50k записей, затем slices для ajax based pagination. Будет ли это причиной server load в будущем, так как все records принимаются на page load?

+0

Ограничьте данные в sql перед тем, как запросить его на своем сервере. Например, 'Select * from data Limit 10' – aldrin27

+0

Что сказал альдрин, почему бы вам создать массив 50k, если вы можете просто принести то, что вам нужно от БД напрямую? –

ответ

0

Сначала его плохая идея создать массив, содержащий 50 КБ, и это может быть увеличено. Он может «съесть» всю вашу память в большом трафике. Также вы храните нарезанные части массива для использования на аякс-запросах?

Я думаю, что (если вы не можете установить ограничение в запросе), вы можете создать дополнительную таблицу, в котором вы можете хранить ваши данные (с хрон, например) и показать данные пользователя из него, используя предел пагинацией, или вы можете создайте уровень кэширования (или используйте существующие кеширующие системы: файловый кеш, php memcache, ...) и напишите некоторый алгоритм обновления кеша (это зависит от вашей логики программирования).

+0

хорошо я говорил с клиентом, они говорят, что это не будет 50 кб, а около 15-20к. Прямо сейчас я сохраняю массив в сеансе, нажимая на него ajax pagination. И очистка этой переменной сеанса в заголовке, если открываются другие страницы. Я знаю, что это не хорошая практика, а то, о чем я могу думать сейчас. Пожалуйста, дайте мне знать, если вы можете сказать мне, что файлы .json хранятся вместо сеанса. – Cinderghoul

+0

@Cinderghoul Это очень кровать для хранения данных, особенно больших данных (которые не связаны с аутентификацией или некоторыми настройками) в сеансе. Вы можете брать данные из разных таблиц, а не хранить их в файлах кеша (например, в файлах JSON, как вы говорите). Возьмите данные, нарежьте их на части и каждую часть магазина в json (f.e. datapart1, datapart2, ...) и на первую часть загрузки первой страницы, на второй странице datapart2 и так далее. Если ваши данные обновляются, например, один раз в дате, вы можете удалить и воссоздать этот jsons один раз в дате. –

+0

Я использую систему Cache Laravel для хранения этих данных. – Cinderghoul

Смежные вопросы