Редактируем classes/modules/sys_cache/Cache.class.php, или, можно просто создать папку Cache в каталоге classes/modules и скопировать туда Cache.class.php из sys_cache. Так как сначала идет проверка наличия класса в папке Cache, а потом уже в sys_cache — это сработает.
После
define('SYS_CACHE_TYPE_MEMORY','memory');
добавляем
define('SYS_CACHE_TYPE_XCACHE','xcache');
Перед
} else {
throw new Exception($this->Lang_Get('system_error_cache_type').": ".$this->sCacheType." (file, memory)");
}
добавляем дополнительну проверку
} elseif ($this->sCacheType==SYS_CACHE_TYPE_XCACHE) {
require_once('Zend/Cache/Backend/Xcache.php');
$oCahe = new Zend_Cache_Backend_Xcache(array());
$this->oBackendCache = new Dklab_Cache_Backend_TagEmuWrapper(new Dklab_Cache_Backend_Profiler($oCahe,array($this,'CalcStats')));
В config/config.php прописываем
define('SYS_CACHE_TYPE','xcache')
Теперь кроме memory и file, LS поддерживает и xcache.
23 комментария
Отличная новость, всегда считал, что дополнительно гонять трафик, по сети накладно. Так что memcache не наш метод, есть лишние телодвижения…
Xcache — это opcode cache, ускорялка пхп. Xcache «компилирует» файлы для быстрого выполнения в PHP и держит их в памяти для быстрой загрузки. В нем также есть API для кэширования. Если стоит xcache, я считаю излишним ставить memcache, т.к. функции memcache по кэшированию можно возложить на xcache.
Что же касается того, чем он лучше других «ускорялок» пхп, то это холиварная тема :) Тут уж кому как нравится. Я сначала пользовался turck mmcache, потом eaccelerator-ом, теперь вот перешел на xcache. Потому что перспективы развития eaccelerator на мой взгляд туманны, достаточно посмотреть на то, что они отказались от API в новых версиях.
Заметьте, там в конце не хватает закрывающего тега пхп. Не забудьте добавить ?> в конце.
Это не ошибка, а Зендовский стандарт. Они рекомендуют не ставить закрывающий тег, т.к. пхп это нормально хавает, а программера навсегда избавляет от ошибки «концевого пробела»
Кеш будет в памяти, а не на диске. Со всеми вытекающими, плюс:
Xcache «компилирует» файлы для быстрого выполнения в PHP и держит их в памяти для быстрой загрузки.
Будет сразу заметно… Так как скрипты не будут каждый раз компилироваться и не будет накладных расходов, виде диска, в случаи filecache или tcp в случаи memcache.
Кеш может быть, как в памяти аля memcache, так и в отдельном каталоге, как в filecache. Есть еще вариант с кешем в R/O, но как в случаи с каталогом, не использовал, даже документацию одним глазом смотрел, поэтому насчет xcache могу и ошибатся, но в turck mmcache и eaccelerator кеш на диске 100% был.
Не знаю правда или нет, но у меня были проблемы на VPS с Xcache. Вот фрагмент переписки с саппортом: Я К сожалению eaccelerator почему то не работает. Если раскомментить его строки в php.ini то обращение к сайту выдает 502 Bad Gateway. Саппорт Исправлено, был конфликт eAccelerator c XCache, их нельзя использовать совместно.
Если это действительно так, то нужно учитывать и выбирать что лучше.
Ничего удивительного, это как, если бы вы в одну машину посадили двух водителей и они начали бы управлять ей одновременно, один вправо, другой влево, а машина в итоге едет вперед. По сути eAccelerator и XCache делают одно и тоже, разница лишь в фичах и подходе в их реализации… Если я правильно помню, на сегодняшний день по фичам eAccelerator лидирует на одну важную, это оптимизация криво написанного кода. Но у него(eAccelerator) нету потенциала, поскольку это всего лишь форк turck mmcache, который уже давно не развивается. В новой версии eAccelerator будут убраны все важные фичи и это не перво апрельская шутка, объяснить это просто, потенциал заложенный в turck mmcache иссяк, разработчики просто не смогли подружить его с версий 5.3 и 6.х. Поэтому, если версия PHP ниже 5.3.х, то eAccelerator пока лучше, но если метить в будущие и не хочется потом переписывать или писать врайпер, для взаимодействия с API, лучше сразу использовать XCache, ведь тесты показывают, что по скорости они идут практически один в один и выигрыш одного или другого, на глаз будет, не заметен.
Если я верно помню, когда появился XCache его разработчик сам рекомендовал использовать его продукт как дополнение к eAccelerator, но с тех пор много воды утекло. Сам я никогда не пробовал запускать их одновременно, не вижу смысла. Учитывая ошибку 502 Bad Gateway, могу предположить, что могла быть ошибка в конфиге и поэтому бэкэнд сервер не отвечал фронтэнд серверу, он просто не запускался.
Поскольку у вас уже используется XCache, менять шило на мыло не стоит. Продолжайте использовать этот замечательный продукт.
Я как-то тестировал APC в сравнении с memcache и APC выиграл всухую по скорости. В целом использовать хранение кеша таким образом полностью оправдано. Единственное, что в PHP 5.3 уже встроено как я понимаю кеширование опкода и для меня пока остается открытым вопрос о смысле использования ускорителей в будущем.
Еще бы он не выиграл. Они ведь кешируют разные вещи, грубо говоря, APC кеширует, то что выводит данные, а memcache кеширует эти данные. Но они хороши в паре, ибо по сути APC+memcache и есть XCache. Смысл ставить две штуки если можно поставить одну? :-) Да еще и по tcp или через сокед операций не будет…
Когда я смотрел APC, а это было очень давно, эффект он давал только на самом большом уровне кеширования, но при это если файл изменялся, он не замечал этого и выдавал не актуальный вариант, поэтому я его не юзаю…
Ну я же написал, что смотрел его очень давно. Но впечатление он у оставил только негативное. Сейчас же, перед тем как писать, я глянул его сайт и он опять меня не впечатлил, списка фич нету, Introduction который мог бы за него сойти, пуст.
ЗЫ: может конечно пропустил и не заметил, но это очень важная часть в таких продуктах…
Я что-то не догоняю. Сначала «Xcache — это opcode cache...», а потом «Если стоит xcache, я считаю излишним ставить memcache». Но мемкеш-то ведь другим занимается — он кеширует данные, а вовсе не пхп-скрипты. Или Xcache делает и то, и другое?
Не подскажете как добавить поддержку xcache в админпанель от avadim? Не получается очистить кэш из админпанели. Выдает Fatal error: xcache_clear_cache() [http://xcache.lighttpd.net/wiki/InstallAdministration]: xcache.admin.user and/or xcache.admin.pass settings is not configured. Make sure you've modified the correct php ini file for your php used in webserver. in /......./classes/lib/external/DklabCache/Zend/Cache/Backend/Xcache.php on line 185
Я понимаю, что нужно где то задать xcache.admin.user и xcache.admin.pass но вот где их задать? Буду очень благодарен если кто подскажет как настроить. Спасибо.
23 комментария
Что же касается того, чем он лучше других «ускорялок» пхп, то это холиварная тема :) Тут уж кому как нравится. Я сначала пользовался turck mmcache, потом eaccelerator-ом, теперь вот перешел на xcache. Потому что перспективы развития eaccelerator на мой взгляд туманны, достаточно посмотреть на то, что они отказались от API в новых версиях.
Т.к. на шареде приходится за невозможностью memcache, использовать filecache.
Или есть возможность его самостоятельной установки по ssh (например есть на nic.ru)
Кеш будет в памяти, а не на диске. Со всеми вытекающими, плюс:
Будет сразу заметно… Так как скрипты не будут каждый раз компилироваться и не будет накладных расходов, виде диска, в случаи filecache или tcp в случаи memcache.
ЗЫ: Хотя можно включить, чтобы кеш был на диске…
Я К сожалению eaccelerator почему то не работает. Если раскомментить его строки в php.ini то обращение к сайту выдает 502 Bad Gateway.
Саппорт Исправлено, был конфликт eAccelerator c XCache, их нельзя использовать совместно.
Если это действительно так, то нужно учитывать и выбирать что лучше.
Если я верно помню, когда появился XCache его разработчик сам рекомендовал использовать его продукт как дополнение к eAccelerator, но с тех пор много воды утекло. Сам я никогда не пробовал запускать их одновременно, не вижу смысла. Учитывая ошибку 502 Bad Gateway, могу предположить, что могла быть ошибка в конфиге и поэтому бэкэнд сервер не отвечал фронтэнд серверу, он просто не запускался.
Поскольку у вас уже используется XCache, менять шило на мыло не стоит. Продолжайте использовать этот замечательный продукт.
Когда я смотрел APC, а это было очень давно, эффект он давал только на самом большом уровне кеширования, но при это если файл изменялся, он не замечал этого и выдавал не актуальный вариант, поэтому я его не юзаю…
ЗЫ: может конечно пропустил и не заметил, но это очень важная часть в таких продуктах…
Впрочем это вопрос отдельный уже. Самое главное, что кроме memcache хватает еще хороших инструментов для кеширования.
Я понимаю, что нужно где то задать xcache.admin.user и xcache.admin.pass но вот где их задать? Буду очень благодарен если кто подскажет как настроить. Спасибо.