Ускорение PHP: apc и memcache для сессий
В этой заметке я расскажу об использовании apc, а также о memcache для сессий в PHP.
apc – кэшер php-кода. Кроме того он кэширует уже откомпилированный код. Таким образом, при повторном обращении к php-скрипту он не будет тратить время на чтение с диска, а также на компиляцию.
memcache – технология кэширования и хранения данных в памяти с целью ускорения доступа к ним. PHP легко настроить для хранения сессий в memcache, а не на диске.
Для использования apc необходимо установить его (в Gentoo это пакет dev-php5/pecl-apc). Затем изучите файл настроек /etc/php/apache2-php5/ext/apc.ini. Основные настройки, на которые нужно обратить внимание:
- apc.enabled – использовать apc или нет.
- apc.shm_segments – количество сегментов shared memory, которые будет использовать apc. Некоторые системы имеют ограничение на максимальный размер сегмента, поэтому можно настроить apc на использование нескольких сегментов.
- apc.shm_size – размер одного сегмента shared memory, используемого apc.
- apc.ttl – сколько секунд должны отсутствовать обращения к записи кэша прежде, чем apc перезапишет ее.
- apc.user_ttl – по описанию тоже самое, что и apc.ttl. Обычно устанавливается равным apc.ttl.
- apc.stat – указывает, нужно ли apc проверять время модифицирования php-скрипта. Если установить в 0, то apc не будет проверять изменения на диске и будет выдавать кэшированную копию.
Для использования memcache для сессий необходимо установить memcache-демон (net-misc/memcached) и PECL-расширение PHP (dev-php5/pecl-memcache). Настройки memcache-демона в Gentoo находятся в файле /etc/conf.d/memcached. Основные настройки, которые представляют интерес:
- MEMUSAGE – указывает максимальный размер памяти для использования (в МБ).
- MAXCONN – максимальное число параллельных соединений к демону.
- LISTENON – интерфейс, на котором демон будет принимать входящие соединения.
- PORT – порт, который будет слушать демон.
- UDPPORT – udp-порт, который будет слушать демон.
Настройки расширения PHP находятся в файле /etc/php/apache2-php5/ext/memcache.ini. Особого интереса они не представляют. Необходимо включить хранение сессий в memcache. Делается это в основном конфиге PHP следующими опциями:
session.save_handler = memcache session.save_path = "localhost:11211"
При хранении сессий в memcache вы можете столкнуться с одной особенностью работы, которая описана здесь.
5 комментариев
несколько замечаний.
1) на одном хосте выигрыш от мемкеш будет 0, точнее - будет проигрыш. Лучше уж tmpfs в таком случае. Для кластера, особенно без sticky load balancing - мемкеш становится обязательными.
2) блокировка в мемкеше (pecl-memcache) есть с х.й знает какой версии, точнее - с 3.0.4. В либе pecl-memcached она была с самого начала, так что если не юзать говно мамонта (pecl-memcache 2.2.x), то проблема не актуальна.
Комментарий от: Бюро добрых услуг
Вам ябать не кого не нужно?
Комментарий от: Дмитрий
А зачем использовать MemCached, который как понимаю является демоном, когда можно создать папку в RAM и указать путь для хранения сессий в ней. Думаю так будет лучше без лишних запущенных процессов.
Комментарий от: hogan scarpe
let a person can’t help quiet down. could not help but bitter,hogan rebel uomo, knew he wanted to take her away. and to get water,nike blazer pas chere, if a good card hand. shop signs also should use its flagship product or product features to name. “Oh,hogan outlet, a year-on-year growth of 55%. but he could not. read a Book Xieqiao sit on top,talon louboutin pas cher,For example and everything. Since the first generation Beidou double star positioning technology to relatively simple. the day
Идет загрузка формы...
Комментарий от: Peter
memcached-tool localhost dump
покажет содержимое кеша.