Вопрос:
Помимо недостатка при перезапуске memcached все сеансы теряются и пользователи выходят из системы, каковы другие недостатки использования memcached для хранения данных сеансов PHP вместо файлов. Любые проблемы безопасности? Улучшена ли производительность с помощью memcached вместо стандартных файлов на диске?
Ответ №1
Хотя многим удалось оптимизировать производительность базы данных с помощью Memcached, это может быть не лучшее решение для каждой ситуации.
Некоторые из недостатков Memcached:
- Требование к размеру
- Поддержка документации не поддерживается
- Волатильность (если произошел сбой экземпляра сервера Memcached, все данные объекта, хранящиеся в сеансе, исчезли)
- Безопасность (аутентификация не встроена в Memcached).
Но все же Memcached – хороший выбор во многих приложениях по следующим причинам:
- Memcached может компенсировать недостаточные свойства ACID и никогда не блокирует.
- Memcached – это кросс-платформенный
- Кросс-СУБД
- Его дешевый
Давайте посмотрим на более яркую сторону!
Ответ №2
Не проблема безопасности, связанная с использованием memcached для сеансов, а скорее то, что я часто прихожу: вы абсолютно должны убедиться, что ваши экземпляры memcached либо используют сокеты unix, либо – если они связаны с частью – их порт заблокирован. В противном случае люди могут просто подключаться к сети и просматривать, изменять и удалять (сеансовые) данные.
Кроме того, как следует из названия, это решение для кеширования, а не решение для хранения. Таким образом, если вы решите использовать memcached для хранения сеансов, вы должны иметь его как с резервной копией базы данных, так и с файловым хранилищем, поэтому, если есть недостаток в кеше (запись удалена из-за тайм-аута, ручного удаления, сброса или из-за того, что назначенный память была заполнена, и ее обрезали), она может проверить более постоянный тип хранилища, прежде чем сказать “нет, его нет”.