2013-05-14 2 views
1

Сохранение большого массива в сеансе PHP будет затруднено на сервере? Под «большим» массивом я имею в виду массив, который имеет, возможно, 500 элементов с каждым элементом, имеющим до 100 полей.Сохранение массива в сеансах PHP

Я мог бы тысячам пользователей выполнять этот процесс несколько раз/мин.

+0

Да, было бы. Что в массиве? Возможно, вы сможете решить свою проблему с помощью JavaScript-based localStorage. – Blazemonger

+0

Возможно, это зависит от того, хранятся ли данные сеанса в файлах или в базе данных ... – Wiktor

+0

Это зависит от конфигурации вашего сервера. Сессии хранятся в ОЗУ, а затем на жестком диске, и если вы обращаетесь к ним очень часто, это неэффективно. Используйте файлы cookie или базу данных. – tobspr

ответ

3

Во-первых, краткое введение в обращение сессии в PHP:

При открытии сеанса, печенье создается, который содержит идентификатор сессии, и отправляется клиенту. Затем PHP будет использовать путь, определенный в session.save_path, для сохранения файла с использованием id в качестве имени файла (reference).

Что это значит в вашем случае? Это означает, что вы создадите дополнительное узкое место (дисковый ввод-вывод является одним из самых медленных в большинстве настроек), потому что вы будете писать/читать файлы все время.

Серверы баз данных имеют тонны кода для обработки такого рода латентности, поэтому было бы очень полезно просто использовать таблицу в базе данных, которая имеет сериализованный массив в виде строки, с ключом по ID в $_SESSION.

+0

Итак, вы предлагаете писать в базу данных вместо сеанса? Звучит здорово, но я бы подумал, что это будет даже больше беспокоить производительность, нет? – Andrew

+0

Мое фактическое предложение состояло бы в том, чтобы не запрашивать столько данных за один раз, но во всех случаях вы должны запрашивать другой механизм, чем сеанс. База данных является самой простой, но вы можете захотеть проверить [memcached] (http://memcached.org/) или аналогичный механизм кэширования памяти. – hexblot

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