Переменные сеанса - PullRequest
       28

Переменные сеанса

1 голос
/ 11 августа 2009

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

Ответы [ 8 ]

2 голосов
/ 11 августа 2009

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

Но реальный вопрос напрашивается: что вы ищете в магазине? Имея чуть больше информации, мы могли бы дать вам лучший ответ относительно того, где вы хотели бы ее хранить:)

Edit:

Если вы хотите сохранить пользовательские действия, я мог бы порекомендовать создать таблицу UserActions или что-то в этом роде. Таблица, содержащая следующее:

id INT (generic ID for the record),
timestamp TIMESTAMP/DATETIME (whatever your DB supports),
userid INT (lookup to the user table),
action VARCHAR (what action you want to record),
etc etc (whatever else you want to store)

Затем, когда пользователь выполняет действие, которое вы хотите записать, просто зарегистрируйте его в самой таблице, вместо того, чтобы заставить его перемещаться вместе с пользователем в сеансе / файле cookie. На самом деле самой странице не нужно знать, какие действия пользователь выполнял в прошлом, если только это не приложение типа «многошаговый мастер». В этом случае, вероятно, было бы лучше передать их как переменную сеанса.

Затем вы помещаете хранилище в настоящий компонент хранилища (являющийся базой данных) вместо сеанса / файла cookie в качестве хранилища.

Я имею в виду, что у нас до сих пор нет точного представления о том, что вы разрабатываете, но я надеюсь, что это поможет.

1 голос
/ 11 августа 2009

Переменные сессии обычно предпочтительнее, чем куки. Тем не менее, они обычно хранятся в каталоге / tmp на вашем веб-сервере, который доступен для чтения и записи. Это может стать источником неприятностей, если вы не контролируете свой сервер или работаете в общей среде. Хорошая практика - не хранить конфиденциальную информацию в переменных сеанса и не полагаться на них в тех вещах, которые должны работать.

0 голосов
/ 13 августа 2009

Использование любых переменных сеанса - вообще - означает, что ваши серверы приложений должны поддерживать состояние сеанса с соответствующей синхронизацией.

Это накладные расходы и может негативно повлиять на масштабируемость вашего приложения, поскольку каждый сервер должен знать (потенциально) о каждом сеансе, что будет означать большой межсерверный трафик для данных сеанса и синхронизации. *

Пока у вас есть только один сервер, все в порядке.

Когда вы получаете все больше и больше серверов, географически распределенных, это становится все более и более болезненным.

Существуют некоторые накладные расходы для сериализации / десериализации сеанса, но на практике это не такая проблема, поскольку она будет относительно фиксированной для каждого запроса, а следовательно, масштабируемой для приложений с высоким трафиком.

0 голосов
/ 11 августа 2009

Когда я писал этот вопрос, я думал о нечувствительных данных и о приложении для регистрации активности пользователей на веб-сайте. Я думаю, что для занятого сервера с большим количеством пользователей лучше использовать куки, вместо этого он будет выгружать ресурсы сервера (память, ввод-вывод жесткого диска). С точки зрения производительности, я думаю, что переменные сеанса являются лучшим решением. Во всяком случае, я не знаю, как лучше будет масштабировать SV-решение.

0 голосов
/ 11 августа 2009

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

0 голосов
/ 11 августа 2009

Переменные сеанса не требуют отправки пользователем, они просто загружаются на основе ключа сеанса. Использование памяти зависит от реализации сеанса, так как стоимость извлечения сеанса из вашей базы данных (или файловой системы, или памяти, или w / e) стоит.

0 голосов
/ 11 августа 2009

Данные сеанса обычно хранятся в файлах на сервере или в базе данных. Так что сколько там данных, зависит только от ваших скриптов. Если вы хотите хранить большие двоичные файлы в сеансах, вы, вероятно, быстро достигнете пределов памяти.

Хранение данных в файлах cookie не всегда хорошая идея. Эти данные видны клиенту, он может легко их изменить, а в некоторых случаях это просто то, что вы не должны разрешать.

0 голосов
/ 11 августа 2009

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

В противном случае, если данные предназначены только для текущего сеанса, перейдите к $ _SESSION. Вот для чего он.

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