Взаимодействует ли сеанс PHP с Share-Nothing-Architecture? - PullRequest
2 голосов
/ 26 марта 2010

Когда я впервые встречаюсь с PHP, я поражаюсь идее Sharing-Nothing-Architecture. Я однажды в проекте, масштабируемость которого страдает от обмена данными между различными HTTP-запросами.

Однако, как только я продолжу свое изучение PHP. Я обнаружил, что в PHP есть сессии. Это выглядит противоречащим идее ничего не делиться.

Итак, PHP-сессия была изобретена, чтобы сделать аналог технологии ASP / ASP.NET / J2EE? Должны ли высокомасштабируемые веб-сайты использовать сессию PHP?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

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

Я недостаточно знаю архитектуру Microsoft для обработки сеансов, чтобы комментировать это, но существует огромная разница в способах обработки сеансов PHP и в том, что на самом деле сохраняется в сеансах по сравнению с J2EE.

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

C.

2 голосов
/ 26 марта 2010

Модель PHP по умолчанию блокирует сессии для каждого пользователя. Это означает, что если пользователь A загружает страницы 1 и 2, а пользователь B загружает страницу 3, единственная задержка, которая произойдет, заключается в том, что странице 2 придется ждать, пока страница 1 не будет завершена - страница 3 все равно будет загружаться независимо от страниц 1. и 2, потому что нет ничего общего для отдельных пользователей; только в течение данного сеанса.

Таким образом, это в основном решение «пополам», которое в итоге работает нормально - большинство пользователей не загружают несколько страниц одновременно; таким образом, задержки блокировки сеанса обычно низкие. Что касается запросов от разных пользователей, то все равно ничего не передано.

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