Настраиваем PHP+MemCached
1. Устанавливаем сервер memcached
cd /usr/ports/databases/memcached
make && make install && make clean
Настраиваем.
По умолчанию memcached слушает на всех адресах, чего нам не нужно (достаточно localhost).
#./memcached -d -m 2048 -p 11211 -u nobody -l 127.0.0.1
# в rc.conf
memcached_enable="YES"
memcached_flags="-l 127.0.0.1"
2. Устанавливаем расширение для php
pecl install memcache
Прошло нормально? Значит повезло.
У меня FreeBSD пятерка, возникли некоторые проблемы:
/usr/local/bin/phpize: /tmp/download/memcache-2.2.3/build/shtool: Permission denied
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.
которые решались следующим образом.
export PHP_AUTOCONF=autoconf
export PHP_AUTOHEADER=autoheader
phpize
./configure
make
make install
Installing shared extensions: /usr/local/lib/php/20060613/
То есть установка ручками.
Настраиваем php для работы с новоиспеченным модулем.
[root@host /usr/local/etc/php]# tail ./extensions.ini
extension=memcache.so
3. Перезагрузка сервисов
/usr/local/etc/rc.d/memcached.sh start
apachectl restart
4. Проверяем работу
#!/usr/local/bin/php
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";
var_dump($get_result);
UPD: memcached не запускатся на интерфейсе 127.0.0.1
После смены операционной системы, внезапно, memcached стал доступен на всех внешних интерфейсах, вместо одного лупбека.
В саппорте ответили: На виртуализации с FreeBSD ПО не будет слушать адрес 127.0.0.1.
В свое время использовалась виртуализация сети Vnet где был данный адрес, но в настоящее время она не используется и не будет использоваться из-за очень нестабильной работы.
Ок, вешаем memcached на юниксовый сокет, что кстати, добавит ему скорости.
В rc.conf в флагах добавляем -s /tmp/memcached.socket -a 0777
Права 777 нужны чтобы вебсервер мог взаимодействовать с мемкэшедом, работающим от другого пользоватя.
Подключаемся к Memcache из php скрипта:
$memcache = new Memcache;
$memcache->connect('unix:///tmp/memcached.socket', 0);
@author: j4ck
@date: Четверг, 07 Февраль 2008
Комментарии : 10
|
10] Гость - 09:26, 02 Апрель, 2012
|
Команда pecl не работает, если не установлен pear
cd /usr/ports/devel/pear
make
make install
|
|
9] Гость - 00:29, 09 Январь, 2011
|
Memcached действительно дает прирост производительности вашего сайта. Но лучше использовать его в связке nginx(fronten for apache)+apache+eAccelerate+memcached.
И тогда получите почти идеальный вариант производительности для большинства проектов. У меня после установки на сайте http://eshopes.com получилось рост в 3 раза приблизительно по скорости загрузки и выполнения.
Советую попробовать этот вариант.
|
|
8] Гость - 14:06, 08 Ноябрь, 2010
|
Гость, который писал 18 февраля: можно-то можно, но нужно ли лепить что-то из найденных по помойкам кусков? По-моему, лучше написать свое (если времени достаточно) с учетом специфики проекта и в соответствии со своим стилем кода.
Последним трем гостям: да вы по жизни чмо и уроды!
|
|
7] Гость - 15:06, 20 Июль, 2010
|
|
гыыы
|
|
6] Гость - 16:38, 13 Июль, 2010
|
|
Лашары
|
|
5] Гость - 22:13, 08 Январь, 2009
|
|
вы все гамасеки =)
|
|
4] Гость - 21:06, 01 Январь, 2009
|
При использовании скрипта выше упираемся в дедлоки на большом трафике =(
http://blogdr.ru/how-to-solve-deadlock-memcached-php/
|
|
3] Гость - 22:57, 11 Май, 2008
|
Для фряхи модуль для php лучше собрать из портов, чтобы удобнее обновлять
/usr/ports/databases/pecl-memcache
|
|
2] Гость - 16:47, 18 Февраль, 2008
|
Класс для работы с memcached из php можно найти на phpclasses.org, например:
http://www.phpclasses.org/browse/file/17230.html
|
@СКАЖИРЕКЛАМЕНЕТ@