Чем хранение данных в $ _SESSION отличается от memcache (d)? - PullRequest
7 голосов
/ 23 февраля 2012

Очевидное отличие состоит в том, что при сохранении в memcache(d) данные становятся доступными через систему.Сеансы хранят данные для каждого пользователя, однако теоретически session_id() можно использовать для обмена этими данными с большим количеством пользователей.

Однако с точки зрения производительности, скорости и использования памяти - есть ли разница?

Ответы [ 4 ]

5 голосов
/ 23 февраля 2012

Сессии PHP по умолчанию хранятся в файловой системе. Вы можете изменить это поведение, чтобы они сохранялись в базе данных или в вашем случае memcached.

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

См. session_set_save_handler

2 голосов
/ 23 февраля 2012

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

При прочих равных memcache работает намного лучше, чем кеширование файлов. С точки зрения памяти, когда вы читаете файл для получения данных (в данном случае это файл сеанса), он все равно помещается в память, поэтому он не экономит место. Фактически, если несколько запросов к apache разным рабочим процессам, возможно, потребуется прочитать один и тот же файл сеанса - каждый использует свой собственный фрагмент памяти, пока рабочий процесс не будет собран. Используя memcache, этого не происходит.


0 голосов
/ 23 февраля 2012

Сеансы хранятся либо в файле, либо в базе данных.Memcache хранится в памяти для более быстрого доступа.

0 голосов
/ 23 февраля 2012

Ну, вы можете просто использовать memcache для $_SESSION.Это определенно быстрее, так как не требует большого количества обращений к API PHP, но вместо этого идет прямо к API C.

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

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

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