Есть ли ограничения в обработке сессий PHP? - PullRequest
4 голосов
/ 13 сентября 2011

Я видел, что многие сайты отказались от использования обработки сессий по умолчанию в PHP для своего собственного метода, и я до сих пор не понимаю, почему.мне, что люди разработают свой собственный метод.Есть ли какое-то ограничение, о котором я не знаю, или это чисто так, что они контролируют все?

(я пытался спросить их, и да, у них либо не было способа связаться с ними, либо они "что-то видел против использования сессий PHP ", не зная, что это было на самом деле)

Ответы [ 4 ]

7 голосов
/ 13 сентября 2011

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

Балансировщик нагрузки эффективно переключается между кластером компьютеров. Поэтому, если по какой-либо причине вы получили обслуживание от компьютера № 1 по первому запросу, а затем от компьютера № 2 по второму запросу - второй компьютер не может прочитать сеанс, поскольку он не находится в папке / tmp.

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

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

1 голос
/ 13 сентября 2011

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

2) Однако Session слабый, он опирается на один PHP (который может быть украден). Однако можно защитить сеанс, используя другой метод, например cookie + ip + expiration.

Так что да и нет. Сеансы все еще широко используются, но требуют тонкой настройки.

1 голос
/ 13 сентября 2011

При стандартной настройке вы привязаны к использованию файловой системы, сохранению незашифрованных данных сеанса и т. Д.

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

1 голос
/ 13 сентября 2011

Я бы подумал, что основная причина использования ваших собственных функций обработки сеансов - в целях тестирования. Если вы запускаете модульные тесты, у вас не обязательно будет работать браузерная среда. Вы не сможете устанавливать файлы cookie, поэтому PHP не будет устанавливать $_SESSION переменные для вас.

Если, однако, вы написали свой собственный класс (классы) обработки сеансов, то вы можете создать фиктивный класс для запуска модульных тестов. Объект будет вести себя как «настоящая» сессия, но вам не придется бродить по браузерам, файлам cookie и людям.

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