2016-03-18 1 views
0

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

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

В какой момент, между этими двумя крайностями, задается значение в переменной сеанса правильно? Или они основаны на том, что вы храните, как имя пользователя, а не на том, сколько вы используете?

+0

Похоже, вы получите больше пользы от слоя кеширования. Предварительная загрузка данных всех страниц, если пользователь не имеет доступа к этим страницам, является пустой тратой ресурсов. – ceejayoz

+0

@ceejayoz Я только храню массив бит-флагов, чтобы узнать, какие ссылки и элементы меню отображаться в заголовке и на страницах. Ничего о самом содержании страницы, Извините, если я не понял. – user3700940

ответ

0

Переменные сеанса хранятся на вашем сервере точно так же, как значения базы данных хранятся на вашем сервере.

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

Нет причин, по которым вы не смогли бы достичь тех же результатов, просто сохраняя все свои значения внутри одной строки в своей базе данных и запрашивая для этого. (Примечание: делать это с помощью переменных сеанса или полей базы данных - это плохая идея). В конечном итоге оба источника данных исходят из хранилища сервера.

Это, как говорится ...

переменные сессии традиционно хранят временные значения, связанные с состоянием клиента, например, является ли или не зарегистрирован клиент в вообще, когда в последний раз Войти был, и т.д. .

В переменных базы данных должны храниться вещи, которые вы хотите сохранить за пределами этой конкретной клиентской сессии.

+0

Не запрашивал бы базу данных для информации при загрузке каждой страницы, а затем ее разбирать в конечном итоге занимает больше времени, а просто запрашивает переменную сеанса для сохранения необходимой информации, как в моем примере? – user3700940

+0

Эти два эквивалента для эквивалентных объемов данных. Что заставляет вас думать, что получение переменной сеанса происходит быстрее? Его все еще нужно прочитать где-то на сервере, а затем отправить в целом клиенту для анализа. – hofan41

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