Этот пост относится скорее к серверной части, чем к коду. Однако и к коду тоже. Сервер debian с php 5.4.
В дополнение к моему посту об установке memcached.
Был забыт такой важный параметр, как I.
Сейчас в моем конфиге указан -I 10M, что означает размер слабов.
При установке memcached необходимо учитывать версию libmemcache устанавливаемую на сервер.
Для php 5.4 необходимо полностью обновить версию, включая php5-dev и php-pear c dotdeb. Далее для debian.
Добавить репозитории dotdeb
1 2 3 4 5 6 7 8 9 |
#dotdeb deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all #5.4 deb http://packages.dotdeb.org squeeze-php54 all deb-src http://packages.dotdeb.org squeeze-php54 all |
Обновиться
1 2 3 4 5 |
apt-get install php5 apt-get install php5-dev php-pear apt-get install memcached |
Далее нам нужно установить memcached из pecl, но перед этим определиться с версией. Все версии можно посмотреть на сайте – https://launchpad.net/libmemcached/1.0
Я наткнулся на проблему, что при установке последней версии 1.0.17 и попытке установки последней версии pear memcached – не компилируется. Оказывается последняя версия memcached 2.1.0 не совместима с последней версией libmemcached. Необходимо ставить 1.0.16 или libmemcached >= 1.0.17, если вручную, или можно c dotdeb версию 1.0.10.
1 2 3 |
apt-get install libmemcached10 |
Я предпочитаю более последнюю.
1 2 3 4 5 6 7 8 |
cd ~ wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz tar -zxvf libmemcached-1.0.16.tar.gz cd libmemcached-1.0.16 ./configure make && make install |
Далее если memcached уже был установлен
1 2 3 |
pecl uninstall memcached |
И в любом случае
1 2 3 |
pecl install memcached |
И следуя инструкции добавить extension=memcached.so в php.ini.
Еще один нюанс с использованием расширения Memcached в php описан на странице – http://www.php.net/manual/en/memcached.set.php
В двух словах: если ставить время жизни кеша в секундах, то оно не фиксировано. Т.е. если ставить 60 секунд, то кеш удалится в период между n > 0 и n < 60. Лучше ставить таймстамп равный текущему времени плюс время жизни, как показано в примере.
1 2 3 |
$m->set('object', new stdclass, time() + 300); |
upd
Eсли во время установки из PECL возникают баги, можно поставить последний master.
1 2 3 4 5 6 7 8 |
git clone https://github.com/php-memcached-dev/php-memcached.git cd php-memcached phpize ./configure make make install |