Установка XCache на CentOS

Закачиваем последнюю стабильную версию
Процесс установки очень прост:

# wget http://xcache.lighttpd.net/pub/Releases/1.3.1/xcache-1.3.1.tar.gz
# tar zxf xcache-1.2.2.tar.gz
# cd xcache-1.2.2
# phpize
# ./configure --enable-xcache
# make && make install

Но не встало без непредвиденных трудностей. Во-первых, сначала не нашлось phpize. Как выяснилось, надо было ставить пакет php-devel (#yum install php-devel). Во-вторых, возникла ошибка на этапе сборки (Сборка (техника) — образование соединений составных частей изделия (по ЕСТД ГОСТ 3.1109-82)) — автор ругался на отсутствующий файл заголовка timelib_config.h. После (дипломатический представитель высшего ранга своего государства в иностранном государстве (в нескольких государствах по совместительству) и в международной организации; официальный представитель) недолгого поиска в Гугл решение нашлось: в файле /usr/include/php/ext/date/lib/timelib_structs.h нужно было заступить

#include

на

#include "timelib_config.h"

Дальше сборка и установка прошла без проблем. Сохранилось только добавить в /etc/php.ini настройки для XCache (особо не задумываясь, я взял их из статьи, на которую привел ссылочку выше, только в строке zend_extension заменил путь на свой: /usr/lib/php/modules/xcache.so).

Читайте также:  Лучший Linux 2018 для ноутбука

После данного проверил работоспособность PHP командой php -m и все заработало!

Дальше оставалось только перезапустить Apache и восторгаться эффектом. Усилия того стоили: сайты и работать стали быстрее (правда, могу поставить это только субъективно, точных измерений не проводил) и памяти потреблять меньше. В частности, моя TextCMS заместо 320 Kb на страницу стала потреблять всего 120!

Пример настройки параметров:

[xcache-common]
;; install as zend extension (recommended), normally "$extension_dir/xcache.so"
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "mOo"
; xcache.admin.pass = md5($your_password)
xcache.admin.pass = ""

[xcache]
; ini only settings, all the values here is default unless explained
; select low level shm/allocator scheme implemenation
xcache.shm_scheme = "mmap"
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size = 32M
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count = 1
; just a hash hints, you can always store count(items) > slots
xcache.slots = 8K
; ttl of the cache item, 0=forever
xcache.ttl = 0
; interval of gc scanning expired items, 0=no scan, other values is in seconds
xcache.gc_interval = 0
; same as aboves but for variable cache
xcache.var_size = 0M
xcache.var_count = 1
xcache.var_slots = 8K
; default ttl
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
; N/A for /dev/zero
xcache.readonly_protection = Off
; for *nix, xcache.mmap_path is a file path, not directory.
; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection
; 2 group of php won't share the same /tmp/xcache
; for win32, xcache.mmap_path=anonymous map name, not file path
xcache.mmap_path = "/dev/zero"
; leave it blank(disabled) or "/tmp/phpcore/"
; make sure it's writable by php (without checking open_basedir)
xcache.coredump_directory = ""
; per request settings
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off

[xcache.coverager]
; per request settings
; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
xcache.coverager = Off
; ini only settings
; make sure it's readable (care open_basedir) by coverage viewer script
; requires xcache.coverager=On
xcache.coveragedump_directory = ""