PHP — Рекомендуемый максимальный размер массива — альтернативы?

#php #json

#php #json

Вопрос:

Я пишу страницу Google maps, содержащую около 160 записей, по 1 для каждого местоположения. Исходные данные карты хранятся в таблице sql. Поскольку текста довольно много, это может быть максимум 900 символов на запись.

Я фильтрую эти данные каждый месяц, поэтому на карте может быть 20-30 записей, отображаемых в виде маркеров. Я хочу, чтобы пользователь быстро переключался между месяцами, поэтому я хочу сохранить данные локальными (не запускать sql-запрос).

Является ли чтение всех этих данных в php-массивы из SQL (скажем, максимум 150 кб) хорошей идеей (т. Е. размещение в оперативной памяти) или это действительно не имеет значения?

Является ли Json лучше? (никогда не пробовал этого раньше).

Комментарии:

1. Что вы подразумеваете под «сохранением данных локально»?

2. Я не думаю, что это будет PHP, который доставит вам проблемы — объемы данных могут быть слишком большими для работы с клиентским браузером — вам пришлось бы выводить их все как переменные JavaScript… Я бы рассмотрел Ajax-решения для этого.

3. @Matti Я предполагаю, что он имеет в виду наличие всех данных, доступных внутри страницы, без необходимости делать какие-либо дополнительные запросы.

Ответ №1:

Загрузка данных в память будет выполняться только для каждого запроса, 10 запросов = 10-кратная загрузка данных. Если у вас много данных, а похоже, что так оно и есть, загружать все в память — ПЛОХАЯ идея. Вы будете тратить впустую память и нагружать базу данных (особенно, если многие пользователи будут использовать ее одновременно).

Вам лучше использовать AJAX и запрашивать только те данные, которые вам нужны, и кэшировать их (хранить в хэш-таблице) на стороне пользователя. Вы получите большой прирост производительности. Если вы новичок в AJAX и json, загляните в JavaScript framework — Mootools или jQuery. Оба они — фантастические фреймворки, я лично предпочитаю Mootools ;-).

Однако, если вы все еще хотите сделать это по-своему. Это нужно будет сделать следующим образом:

  1. Загрузить данные из базы данных в массив объектов ($data)
  2. Закодируйте данные json_encode($data)
  3. Сохраните закодированные данные в каком-нибудь скрытом элементе ввода на странице
  4. На странице с помощью JavaScript получаем сохраненные данные из скрытого ввода, декодируем их и что-то делаем с ними…

Таким образом, загрузка начнется в браузере пользователя.