Ответ 1
Сколько у вас памяти? И сколько одновременных пользователей обычно поддерживает ваш сервис во время пикового доступа? Это соответствующие сведения. Без них любой ответ бесполезен. Как правило, это вопрос, легко решаемый при нагрузочном тестировании. Затем найдите узкие места и оптимизируйте их. До тех пор просто заставьте его работать (в пределах разумного).
Но...
Если вам действительно нужна идея того, что вы ищете...
Если мы предположим, что вы не храните многобайтовые символы, у вас есть 400 имен * 100 символов (предположим, что каждое имя максимизирует ваш предел char)... вы смотрите ~ 40 Кб памяти. Кажется слишком незначительным, чтобы беспокоиться, не так ли?
Очевидно, вы получите другие накладные расходы от PHP, чтобы сохранить сам файл данных. Не могли бы вы более эффективно хранить вещи, используя структуру данных, например SplFixedArray
вместо простой array
? Вероятно, но тогда вы теряете оптимизированные функции array_*
, которые вам в противном случае пришлось бы манипулировать списком.
Будет ли пользователь использовать каждую из записей, которые вы планируете хранить в памяти? Если у вас есть их для вашего приложения, не имеет значения, насколько они велики, не так ли? Не стоит хранить много информации, которая вам не нужна в памяти "только потому, что". Одна вещь, которую вы определенно не хотите делать, - это запросить базу данных для 4000 записей при каждой загрузке страницы. По крайней мере, вам нужно будет поместить эти типы транзакций в хранилище памяти, например memcached, или использовать APC.
Этот вопрос, как и большинство вопросов в области информатики, - это просто ограниченная проблема максимизации. Он не может быть правильно решен, если вы не знаете переменные в вашем распоряжении.